一、JSON(JavaScript Object Notation)的簡介: ① JSON和XML類似,主要用於存儲和傳輸文本信息,但是和XML相比,JSON更小、更快、更易解析、更易編寫與閱讀。 ② C、Python、C++、Java、PHP、Go等編程語言都支持JSON。 二、JSON語法規則: ...
一、JSON(JavaScript Object Notation)的簡介:
① JSON和XML類似,主要用於存儲和傳輸文本信息,但是和XML相比,JSON更小、更快、更易解析、更易編寫與閱讀。
② C、Python、C++、Java、PHP、Go等編程語言都支持JSON。
二、JSON語法規則:
myObj ={ "CommParam":[ { "SenderID":"2001", "SenderParam":"Chinese" }, { "SenderID":"2002", "SenderParam":"English" }, ] }
- 使用 { } 保存對象,對象是一個無序的鍵值對集合;
- 數據以鍵值對的形式存儲,每個鍵後面跟著一個冒號:
- 鍵值對與鍵值對之間使用,分隔;
- 使用 [ ] 保存數組,數組可以包含多個對象;
- 鍵值對中值的類型可以是:
- 數字(整數或浮點數):{ "age" : 20 }
- 字元串(雙引號中):{ "name" : "LX" }
- 邏輯值(true或者false):{ "isRotate" : true }
- 數組(在中括弧中)
- 對象(在大括弧中)
- null:{ "personObject" : null }
三、JSON的使用:
①首先定義Json數據
{ "name":"json 線上工具", "url":"https://www.sojson.com", "address":{ "city":"北京", "country":"中國" }, "arrayBrowser":[{ "name":"Google", "url":"http://www.google.com" }, { "name":"Baidu", "url":"http://www.baidu.com" }, { "name":"SoSo", "url":"http://www.SoSo.com" }] }
②可使用工具將JSON生成C#實體:線上JSON轉C#實體類,JSON轉Java實體類 (sojson.com)
public class Address { public string city { get; set; } public string country { get; set; } } public class ArrayBrowser { public string name { get; set; } public string url { get; set; } } public class JSONObject { public string name { get; set; } public string url { get; set; } public Address address { get; set; } public List<ArrayBrowser> arrayBrowser { get; set; } }
③ C#代碼解析JSON數據:
—— 第一種:通過JSON結構映射實體類的方式解析JSON數據
using Newtonsoft.Json.Linq; using Newtonsoft.Json; //將序列化的JSON字元串反序列化,得到JSON對象 JSONObject JsonObj = (JSONObject)JsonConvert.DeserializeObject(serialzedObject, typeof(JSONObject)); Console.WriteLine(JsonObj.name);//json 線上工具
————————————————————————
//將JSON對象序列化成JSON字元串 string str = JsonConvert.SerializeObject(JsonObject); Console.WriteLine(str);
——第二種:不需要創建實體類,直接對Json數據進行解析
using Newtonsoft.Json.Linq //將字元串反序列化成JObject類型 JObject jobj = JObject.Parse(serialzedObject); Console.WriteLine(jobj["name"].Tostring());//輸出:json 線上工具 //解析Json中的數組對象 JArray jarr = JArray.Parse(jobj["arrayBrowser"].ToString());
foreach(var j in jarr)
{
Console.WriteLine(j["name"]);
} ———————————————————————— //若想將JObject對象序列化成字元串 JObject obj = new JObject(); obj["name"] = "Rose"; obj["age"] = 23; Console.WriteLine(obj.ToString());