System.Text.Json 使用

发布时间 2023-06-10 03:09:32作者: microsoft-zhcn

在.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);
    }
}