我正在使用 C#、.NET 8 和
System.Text.Json
JsonSerializer
。
假设我有以下课程:
class Test
{
[JsonPropertyName("a")]
public string A { get; set; }
}
首先,我从 API 获取 json 负载并将其反序列化为类
Test
:
{
"a": "aaaa"
}
现在我想将此类作为 json 保存到文件中,但我不想将其另存为
"a": ...
而是作为
"A": ...
我该如何处理?为每个 API 提供一个类并使用 AutoMapper?推荐的方法是什么?
致以诚挚的问候
如果你想使用
Automapper
你可以这样做:
class Test
{
[JsonPropertyName("a")]
public string A { get; set; }
}
然后有一个 DTO:
class TestDto
{
public string A { get; set; }
}
并配置 Automapper:
cfg.CreateMap<Test, TestDto>().ReverseMap();
使用 NamingPolicy 而不是属性:
using System;
using System.Text.Json;
public class Program
{
public static void Main()
{
var input = """
{
"a": "aaaa"
}
""";
Console.WriteLine(JsonSerializer.Serialize(
JsonSerializer.Deserialize<Test>(input,
new JsonSerializerOptions(){ PropertyNamingPolicy =
JsonNamingPolicy.CamelCase })
));
}
}
public class Test
{
public string A {get; set;}
}