一、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("屬性");
