什么是json
json是存储和交换文本信息的方法,类似xml。但是json比xml更小,更快,更易于解析。并且json采用完全独立于语言的文本格式(即不依赖于各种编程语言),这些特性使json成为理想的数据交换语言。json序列化是指将对象转换成json字符串,json反序列化是指将json字符串还原成对象。
json数据结构
json简单来说就是javascript中的对象和数组,通过这两种数据结构就可以表示各种复杂的结构。
对象:对象在json中表示为大括号“{}”括起来的内容,数据结构为{key:value,key:value,...}的键值对的结构。在面向对象中,key为对象的属性,vlaue为对应属性的值。
数组:数组在json中表示为中括号“[]”括起来的内容,数据结构为["java","javascript","vb",...],取值方式和所以语言一样,使用索引获取,字段的值可以是数字,字符串,数组,对象。
C#使用json序列化有几种方式
- 使用System.Text.Json(微软自带)
- 使用Newtonsoft.Json(引用Newtonsoft.Json.dll)
- System.Runtime.Serialization.Json(以数据流为中介)
- Nancy(包)
使用System.Text.Json
#region using System.Text.Json
private static string ObjectToStringOne(Object obj)
{
string str = System.Text.Json.JsonSerializer.Serialize(obj);
return str;
}
private static T StringToObjectOne<T>(string str)
{
T obj = System.Text.Json.JsonSerializer.Deserialize<T>(str);
return obj;
}
#endregion
使用Newtonsoft.Json
#region using NewTonsoft.Json
private static string ObjectToStringTwo(Object obj)
{
string str = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
return str;
}
private static T StringToObjectTwo<T>(string str)
{
T obj = Newtonsoft.Json.JsonConvert.DeserializeObject<T>(str);
return obj;
}
#endregion
获取序列化字符串中某个字段
using Newtonsoft.Json.Linq;
jsonStr={"resCode":0,"resMeg":"空闲","data":[{"parkName": "A停车场","freeSpaceNum":72}]}
JObject obj = JObject.Parse(jsonStr);
string resMeg= obj["resMag"].ToString(); // 获取resMeg字段的值
string freSpaceNum = obj["data"][0]["freSpaceNum"].ToString();
参考: