一、NuGet包提交Newtonsoft.Json
二、引用命名空間
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
三、命名空間
1、Newtonsoft.Json
JsonConvert,json字符串轉換為object對象
string json = JsonConvert.SerializeObject(new { status = "y", info = "success", data = new string{ } }); //結果:{"status":"y","info":"success"}
JsonSerializer
JsonReader 轉 JObject
方式一
JObject jo = (JObject)JToken.ReadFrom(new JsonTextReader(new StringReader(@"{""status"" : ""y"", ""info"" : ""success""}")));
方式二
using (JsonTextReader reader = new JsonTextReader(new StringReader(@"{""status"" : ""y"", ""info"" : ""success""}"))) { JObject jo = (JObject)JToken.ReadFrom(reader); }
方式三
using (System.IO.StreamReader file = System.IO.File.OpenText(@"D:\data.json")) { using (JsonTextReader reader = new JsonTextReader(file)) { JObject jo = (JObject)JToken.ReadFrom(reader); } }
JsonWriter
2、Newtonsoft.Json.Linq
JObject
JObject jObject = JObject.Parse(objstring);
JObject obj = new JObject();
obj["data"] = 1;
string jsonstring = obj.ToString();
JArray
JArray jArray = JArray.Parse(jObject["data"].ToString()); foreach (var v in jArray){} var value=jArray[a].ToString() JArray array = new JArray(); array.Add("1");
JValue
JProperty
3、Newtonsoft.Json.Serialization
object對象轉為json字符串
string json = JsonConvert.SerializeObject(new { status = "y", info = "success", data= "success"}); //結果:{"status":"y","info":"success"}
字符串轉為JToken索引對象,取得屬性,取得數組
JToken json = JValue.Parse(json); string info = (string)json["info"]; JArray jarray = (JArray)json["data"]; foreach (dynamic arr in jarray) int id = (int)arr["id"];
JObject 用來生成一個JSON對象,簡單來說就是生成”{}”,
JArray 用來生成一個JSON數組,也就是”[]”,
JProperty 用來生成一個JSON數據,格式為key/value的值,
JValue 直接生成一個JSON值
創建JSON字符串
JObject jo = new JObject(); jo.Add(new JProperty("status", "y")); jo.Add(new JProperty("info", "success")); string json = jo.ToString(); //結果:{ "status": "y", "info": "success" }
創建JSON數組字符串
JArray arr = new JArray(); arr.Add(new JValue(1)); arr.Add(new JValue(2)); arr.Add(new JValue(3)); string json = arr.ToString(); //結果:[ 1, 2, 3 ]
創建JSON數組對象字符串
JArray arr = new JArray(); arr.Add(new JObject(){ new JProperty("status", "y"), new JProperty("info", "success") }); arr.Add(new JObject(){ new JProperty("status", "n"), new JProperty("info", "failed") }); string json = arr.ToString(); //結果:[ { "status": "y", "info": "success" }, { "status": "n", "info": "failed" } ]
創建JSON字符串 與 JSON數組對象字符串
JObject jo = new JObject(); jo.Add(new JProperty("status", "y")); jo.Add(new JProperty("info", "success")); jo.Add(new JProperty("data", new JArray() { new JObject(){ new JProperty("id", "1"), new JProperty("title", "hello") }, new JObject(){ new JProperty("id", "1"), new JProperty("title", "world") } })); //結果:{ "status": "y", "info": "success", "data": [ { "id": "1", "title": "hello" }, { "id": "1", "title": "world" } ] }
將json轉換為JObject
string json = "{ \"status\": \"y\", \"info\": \"success\" }"; JObject jo = JObject.Parse(json); //判斷是否存在屬性名, if(jo.ContainsKey("info")) { //取值 string value1 = jo["info"].ToString(); //結果:success string value2 = jo.GetValue("info").ToString(); //結果:success }
將Object轉換為JObject
object obj = new { status = "y", info = "success"}; JObject jo = JObject.FromObject(obj); string value = jo["info"].ToString(); //結果:success //將json轉換為JObject,讀JSON數組數據 string json = "{ \"status\": \"y\", \"info\": \"success\", \"data\": [ { \"id\": \"1\", \"title\": \"hello\" }, { \"id\": \"1\", \"title\": \"world\" } ] }"; JObject jo = JObject.Parse(json); IEnumerable<string> arr = from p in jo["data"].Children() select (string)p["title"]; foreach (var title in arr) { templateBuilder.AppendLine(title); }
刪除屬性
JObject jo = JObject.Parse("JSON字符串"); jo.Remove("屬性名");
在屬性后面添加屬性
JObject jo = JObject.Parse("JSON字符串"); jo["屬性名"].Parent.AddAfterSelf("屬性");