NewtonSoft JSON For Net

1.JSONConvert 序列化与反序列化

string js=JSONConvert.SerialObject(object obj)  对象序列化成JSON格式字符串

例子:string js=JSONConvert.SerailObject(new{Name="zhangsan",Age=22});

   结果:  {"Name":"zhangsan","Age":22};

反序列化:

   T obj=JSONConvert.DeserializeObject<T>(@"{ 'Name':'zhangsan','Age':22}")

   textBox1.Text=obj.Name;

   // zhangsan 

2.JSON.Linq

 public static JObject  JObject.Parse(string json)

JObject jo=JObject.Parse(string jsonString); 

例子:

JObject jo = JObject.Parse(@"{'Name':'sundh','Age':25}");
textBox1.AppendText(jo["Name"].ToString());

结果:sundh

JArray ja=JArray.Parse(@"['aa','bb','cc']");

textBox1.Text=ja.ToString();  

//结果:["aa","bb","cc"]

2.1 SelectToken(string item)


JObject jo = JObject.Parse(@"{'Student':{'Name':'zhangsan','Age':'15'},'Score':{'YuWen':89,'ShuXue':67,'YingYu':95}}");

JObject jStudent = jo.SelectToken("Student") as JObject; //方法1 返回值为JToken
JObject js = jo["Student"] as JObject;   //方法2 返回值为:JToken 因此需要转换
textBox1.Text = jStudent.ToString();

 textBox1.Text += js;

//结果:

{
"Name": "zhangsan",
"Age": "15"
}{
"Name": "zhangsan",
"Age": "15"
}

 

public void Add(string propertyName,JToken value)

JObject jo = JObject.Parse(@"{'Student':{'Name':'zhangsan','Age':'15'},'Score':{'YuWen':89,'ShuXue':67,'YingYu':95}}");
JObject jStudent = jo.SelectToken("Student") as JObject;
JObject js = jo["Student"] as JObject;
js.Add("ls", jo);

//结果

{
"Name": "zhangsan",
"Age": "15",
"ls": {
"Student": {
"Name": "zhangsan",
"Age": "15"
},
"Score": {
"YuWen": 89,
"ShuXue": 67,
"YingYu": 95
}
}
}

 
public abstract class JToken : IJEnumerable<JToken>, 
	IEnumerable<JToken>, IEnumerable, IJsonLineInfo, ICloneable, 
	IDynamicMetaObjectProvider
public class JObject : JContainer, IDictionary<string, JToken>, 
	ICollection<KeyValuePair<string, JToken>>, IEnumerable<KeyValuePair<string, JToken>>, 
	IEnumerable, INotifyPropertyChanged, ICustomTypeDescriptor, INotifyPropertyChanging
 
public class JArray : JContainer, IList<JToken>, 
	ICollection<JToken>, IEnumerable<JToken>, IEnumerable
public class JValue : JToken, IEquatable<JValue>, 
	IFormattable, IComparable, IComparable<JValue>, IConvertible

根据定义可知JToken,对共享元素的一种抽象,即它抽象了JObject元素。

 API Document:https://www.newtonsoft.com/json/help/html/N_Newtonsoft_Json_Linq.htm

posted @ 2020-06-23 07:52  丹心石  阅读(93)  评论(0编辑  收藏  举报