Preface
JSON相對於XML來說較為簡單,沒有繁瑣的標籤,取而代之的就是一對<key,value>
如1
2
3
4
5
6
7
8
9
10
11
12
13
14
15{
"name":
{
"firstName": "Hung-Wei",
"lastName": "Chiu"
},
"birthday": "19900317",
"studentID": "0156521",
"email":
[
"[email protected]"
"[email protected]"
]
}
CSharp
本文將介紹如何以C#來處理JSON格式的物件,
所以這邊推薦使用JSON.NET這個被廣泛使用的函式庫
安裝
請參考官方網站說明 JSON.NET
JSON.NET使用
JSON.NET中,對於JSON的操作,主要分成兩大類
- Serializing and Deserializing JSON
主要是針對物件使用的,能夠將JSON的資料跟物件快速的轉移
缺點就是對應每個JSON資料,都要創立對應的物件來存取 - LINQ to JSON
第二種就是利用JSON Object的方式來操作JSON,使用起來比較直覺也比較有彈性。
以下就針對使用這兩種方法來實際操作json
同時就以上述的範例作為json data
Create JSON Format Data
Serializing
1 | public class Student |
1 | Output |
LINQ TO JSON
這種類型下,有非常多的方法可以使用
- JTokenWriter
- Anonymous Type
- Dynamic Object
- JObject and JProperty
這邊只介紹使用Anonymous Type的方式
1 | JObject o = JObject.FromObject(new |
Output:
{
"name": {
"firstName": "Hung-Wei",
"lastName": "Chiu"
},
"birthday": "19900317",
"studentID": "0156521",
"email": [
"[email protected]",
"[email protected]"
]
}
Read JSON Format Data
Serializing
1 | string json = @" { |
Output:
Hung-Wei
Chiu
19900317
0156521
[email protected]
[email protected]
LINQ TO JSON
在讀取方面,使用JObect.Parse來解析JSON字串,接下來在讀取資料方面,有很多種用法
- LINQ Query
- SelectToken
- dynamic Object
這邊就直接用最簡單的方法去列印JSON的資料
1 | string json = @" { |
Output:
Hung-Wei
Chiu
19900317
0156521
[email protected]
[email protected]
Modify JSON Format Data
Serializing
這邊我沒有找到好的辦法,目前可能是要先deserialize給寫到物件,再對該物件進行操作,最後在serialize給寫回JSON去。
LINQ TO JSON
這部分直接對JObject去進行修改就可以了
1 | rss["studentID"]="9717164" |
還有很多詳細的用法,包刮檔案讀取、JArray、JValue…etc
詳細的就看
官方文件