最近專案中涉及到解析json,他可以用兩種方式實現,自帶的和第三方的,感興趣的都了解一下吧。
c#自帶的方式操作json是以序列化和反序列的方式。
這種方式解析json比較麻煩,自己要寫乙個數字協議datacontract,進行序列化處理。注意json裡的key值 要和定義的數字協議(datacontract)的數字成員(datamember)的名稱相對應,因為他是根據名稱對應的,不然解析到的資料是null。
首先我們要引用system.runtime.serialization,這個可以在【引用管理器】的【程式集】裡面找到。
所在的命名空間為:
using system.runtime.serialization;
using system.runtime.serialization.json;
我的要解析的資料為:
]
}
我自己寫的數字協議:
[datacontract]
class terminalinfo
[datamember(order = 1)]
public string terminal_cmdport
[datamember(order = 2)]
public string terminal_dataport
[datamember(order = 3)]
public string terminal_connect_state
[datamember(order = 4)]
public string terminal_id
[datamember(order = 5)]
public string terminal_usb_sum
[datamember(order = 6)]
public string terminal_soft_version
[datamember(order = 7)]
public string terminal_model
[datamember(order = 8)]
public string terminal_all_usbports_state
}[datacontract]
class usbshare
}
解析獲取資料的方法(如下),updateinfo就是獲取到的資料(下圖所示)。
newtonsoft.json是開源的c#處理json的第三方庫,在github(可以找到原始碼和你所需要的動態庫。
有兩種方式引用它的動態庫,第一種就是根據你的框架選擇合適的動態庫(我的是json120r2版本,有如下這麼多個可用的框架),將對應的動態庫放到你專案下,進行引用。
第二種,就是 選中當前專案右鍵 選中【管理nuget程式包】,如下,然後過濾搜尋【newtonsoft.json】,然後將其【安裝】。
安裝結束後,我們可以看到【引用】裡面已經有它了,然後就可直接使用其命名空間,編譯後,就可以在生成資料夾裡面看到newtonsoft.json.dll了,這種方式是自動根據框架選擇對應的動態庫,很方便。
**如下(我只解析了我需要的部分),
public void parsejsonofterminal(string jsontext)
}
記得寫命名空間
using newtonsoft.json.linq;
這就是c#解析json的兩種方式,自帶的那種寫法我第一遇到(我之前是寫qt c++的,比較孤陋寡聞),比較有意思,雖然比較麻煩。 JSON的兩種解析方式
一.將需要轉換的物件轉換成json物件 1.首先建立json物件 gson gson new gson 2.建立物件 以book類為例 book b new book 3.轉換 string s g.tojson b 此時得到的s即是json的字串 二.將json物件轉換成需要的物件 1.首先建立j...
XML解析的兩種方式區別
xml解析的兩種方式區別 1.dom解析 需要xml完全載入進記憶體才可以操作 可以方便進行增刪改查操作,耗費記憶體 2.sax解析 逐漸掃瞄xml檔案,當遇到標籤時觸發解析處理器,不需要載入進記憶體 只能讀取,無法進行增刪改查 dom解析 具體解析步驟如下 documentbuilde ctory...
兩種過載方式
過載的方式 用某次作業題中的實現complex類做例子 1 實現加法 1 complex complex operator const complex c 2 友元函式 complex operator const complex l,const complex r 2 實現 1 complex c...