伊莉討論區

標題: 使用C# 存取本機的json檔 並將其資料寫入MS SQL Server 資料庫中的資料表 [打印本頁]

作者: minato4869    時間: 2014-9-21 08:27 PM     標題: 使用C# 存取本機的json檔 並將其資料寫入MS SQL Server 資料庫中的資料表

本帖最後由 minato4869 於 2014-9-21 08:27 PM 編輯

各位大大好 我有在網上查很多 目前有查到可以使用json.net 這個開放套件 但是看不出所以然 想請教有什麼方法或是範例讓我參考 謝謝


作者: sam30525sam    時間: 2014-9-22 10:21 AM

本帖最後由 sam30525sam 於 2014-9-24 11:30 AM 編輯

我想先問你visual studio的版本,
如果你是2008以下,我建議你使用你所說的json.net,建立class來轉換成物件
如果你是2010以上,我建議你使用VS內建的轉換Json class,建立class來轉換成物件

不管是哪種版本,我建議你要有這些事前準備,
1. 建立json或xml的class(利用json.net或VS內鍵toJson)
2. 建立資料庫table的class
3. 建立JsonClass To TableClass的method
4. 建立將TableClass與資料庫互動的CRUD

實做我建議你這樣做
1. 首先將JsonData 利用 JsonClass 轉換成Json物件
2. Json物件 轉換成 Table物件
3. 將Table物件的值寫進資料庫


因為你牽扯到的東西很多,我無法一個一個將每一個步驟都貼上參考網址給你,
如果你有哪邊不懂,請在後續文章提出式哪一點不懂,
我再根據你的疑問給你參考網址或解答。

作者: minato4869    時間: 2014-9-23 09:58 PM

本帖最後由 minato4869 於 2014-9-23 11:06 PM 編輯
sam30525sam 發表於 2014-9-22 10:21 AM
我想先問你visual studio的版本,
如果你是2008以下,我建議你使用你所說的json.net,建立class來轉換成物 ...

首先 我的studio的版本是2013 Professional

1.試問內建與json.net這兩者有何差異:
(a) 網路上都推薦json.net 說這套件強大
(b) 我的JSON檔很龐大 是存放地理資訊的資料 最大到70多MB

2.我的想法是先用C#把本機的檔案讀進來 再把裡面的值送進資料庫
然後不需要知道JSON的格式 動態地把資料寫進去資料庫




作者: sam30525sam    時間: 2014-9-23 10:48 PM

本帖最後由 sam30525sam 於 2014-9-24 11:32 AM 編輯
minato4869 發表於 2014-9-23 09:58 PM
首先 我的studio的版本是2013 Professional

1.試問內建與json.net這兩者有何差異:

1.
(a)
你的需求請直接用VS2013內的函式庫。
json.net很大一部份是因為VS在舊版本(如2008),並沒有很好的支援json與xml(雖然我覺得已經夠用了)
所以才有會有其他輔助的dll出現。
尤其現在有將json string直接轉json class這種超好用功能。

(b)
資料龐不龐大無所謂,重點是你class只要建立的好就好。
你似乎很在意你的資料量,但卻對class毫無想法,我認為你完全搞錯了重點。

2.
你的問題我已經在2F說明了,
如果你聽不懂,代表你連json to class都不懂,
有可能你連物件導向都不清楚,有點不太好,建議你買本書先把基礎打起來。
另外,
我不太了解你說的「不需要知道json的格式」這句話,請你詳細說明。

如果你允許,麻煩貼幾個你的json string上來看看。
關鍵字都已經在2F都有了,如果你連google都不太會,那我也無法幫忙你。




作者: lanticee    時間: 2014-9-25 09:33 PM

Json的涵義請參考WIKI
要先了解 JSON只是一種文字結構
Json.net只是一個函數庫 可以將字串轉換成物件的一個工具
至於用內建或是使用Json.net  建議還是用Json.net 連微軟都已經放棄原本內建的,主要還是因為轉換的效率問題

簡單的關聯就是
JSON字串 <=>物件
物件<=>資料庫

我總結到這樣有比較了解嗎?

作者: minato4869    時間: 2014-9-26 10:01 AM

謝謝各位大大 大致上了解了 我會再試看看 有問題會在發問
作者: minato4869    時間: 2014-9-29 09:17 PM

本帖最後由 arthurliuliu 於 2014-10-21 09:45 AM 編輯

我使用該網站  將JSON字串貼上去轉成類別 之後引用json.net套件 將某目錄底下的JSON讀進程式 之後就不知道該怎麼下手了 我想下一步是將JSON字串轉成JSON物件 還是我的方向錯了 以下是我的code:

  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;

  8. namespace oop
  9. {
  10.     class Program
  11.     {
  12.         public class Properties
  13.         {
  14.             public string county { get; set; }
  15.             public string county_id { get; set; }
  16.             public double area { get; set; }
  17.             public string show_id { get; set; }
  18.         }

  19.         public class Geometry
  20.         {
  21.             public string type { get; set; }
  22.             public List<List<List<List<double>>>> coordinates { get; set; }
  23.         }

  24.         public class Feature
  25.         {
  26.             public string type { get; set; }
  27.             public Properties properties { get; set; }
  28.             public Geometry geometry { get; set; }
  29.             public string id { get; set; }
  30.         }

  31.         public class RootObject
  32.         {
  33.             public string type { get; set; }
  34.             public string link { get; set; }
  35.             public string data_time { get; set; }
  36.             public string data_source { get; set; }
  37.             public string description { get; set; }
  38.             public List<Feature> features { get; set; }
  39.         }

  40.         public static void json()
  41.         {
  42.             // read file into a string and deserialize JSON to a type
  43.             Program movie1 = JsonConvert.DeserializeObject<Program>(File.ReadAllText(@"[/color][color=Black][color=Black]D:\twcounty1984.2.json[/color]"));

  44.             // deserialize JSON directly from a file
  45.             using (StreamReader file = File.OpenText(@"D:\twcounty1984.2.json"))
  46.             {
  47.                 JsonSerializer serializer = new JsonSerializer();
  48.                 Program movie2 = (Program)serializer.Deserialize(file, typeof(Program));

  49.                

  50.             }
  51.         }
  52.         static void Main(string[] args)
  53.         {
  54.             
  55.         }
  56.     }
  57. }
複製代碼



程式碼未依規定格式包覆,板主代為編輯。



作者: lanticee    時間: 2014-11-6 03:57 PM

先教你一個方法,你現在已經有了CLASS,先產生一個假的CLASS去變成JSON字串,看看字串是長甚麼樣子之後在往下一步吧。
作者: sliceart    時間: 2015-1-12 12:00 AM

我覺得妳先做個簡單的範例來實作一次,RUN OK再玩正式的XML吧。
例如自己做個簡單的XML,格式隨便,反正測試用的
然後根據你的XML,進到資料庫去建立好存放的資料表
接著就是實作程式,在VS2013內把實體XML檔案讀取後寫入資料庫內。

2F大大已經說了作法,看不懂的就GOOGLE吧




歡迎光臨 伊莉討論區 (http://097.eyny.com/) Powered by Discuz!