C# Json 序列化三种方法
第一种是使用Newtonsoft.Json库
using Newtonsoft.Json
//json 序列化
string json = JsonConvert.SerializeObject(users);
//Json 反序列化
List<User> users = JsonConvert.DeserializeObject<List<User>>(json)
第二种是使用System.Text.Json
using System.Text.Json
//这个在某些场景可以用到
//当面对某些json中一个属性值一会为数组类型,一会为字符类型就能用到这个
//下面的图
可以判断属性值类型,Value.ValueKind == JsonValueKind.Array,当然还有其他类型
这是我的结构类,在做这个判断的时候,这个属性为JsonElement
//反序列化
var aboutData = System.Text.Json.JsonSerializer.Deserialize<AboutData>(json);
//序列化
string json = System.Text.Json.JsonSerializer.Serialize(user);
第三种是使用IO流和System.Runtime.Serialization.Json
我结合他们写了两种方法
/// <summary>
/// Json序列化
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="users"></param>
/// <returns></returns>
public static string JsonConvertSer<T>(List<T> users)
{
//注意这个是DataContractJsonSerializer
DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(List<T>));
//读取
MemoryStream msobj = new MemoryStream();
js.WriteObject(msobj, users);
msobj.Position = 0;
StreamReader sr = new StreamReader(msobj, Encoding.UTF8);
string json = sr.ReadToEnd();
sr.Close();
msobj.Close();
msobj.Close();
return json;
}
/// <summary>
/// Json反序列化
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static List<T> JsonConvertDes<T>(string json)
{
using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
var deserializer = new DataContractJsonSerializer(typeof(List<T>));
List<T> model = (List<T>)deserializer.ReadObject(ms);
return model;
}
}
``
如果有任何违规,侵犯到别人权益。立刻删除
个人笔记