在.NET Core 3.0中加入了对JSON的内置支持
using System.Text.Json; using System.Text.Json.Serialization;
1.读取与写入
// 读取 var str = File.ReadAllText(fileName); var data = JsonSerializer.DeserializeObject<List<Demo>>(str); // 写入 str = JsonSerializer.Serialize(DemoEntity); File.WriteAllText(fileName, str);
2.格式化json字符串
/// <summary>
/// 格式化JSON字符串
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string ToJsonString<T>(this T obj)
{
if (obj != null)
{
var setting = new JsonSerializerOptions
{
WriteIndented = true,
};
return JsonSerializer.Serialize(obj, setting);
}
return string.Empty;
}
3.反序列化
public static T ToObject<T>(this string jsonStr)
{
return JsonSerializer.Deserialize<T>(jsonStr);
}
4.小驼峰格式反序列化
/// <summary>
/// 小驼峰格式序列化。
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="entity">类型对象</param>
/// <returns></returns>
public static string SerializeWithCamel<T>(this T entity)
{
// 小驼峰序列化
var setting = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
return JsonSerializer.Serialize(entity, setting);
}
5.小驼峰格式反序列化
/// <summary>
/// 小驼峰格式反序列化。
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="str"></param>
/// <returns></returns>
public static T DeserializeWithCamel<T>(this string str)
{
if (str != null)
{
// 小驼峰序列化
var setting = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};
return JsonSerializer.Deserialize<T>(str, setting);
}
else
{
return default(T);
}
}