使用System.Text.Json JsonSerializer从api反序列化并序列化为不同名称的文件

问题描述 投票:0回答:2

我正在使用 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?推荐的方法是什么?

致以诚挚的问候

c# .net-8.0 system.text.json
2个回答
0
投票

如果你想使用

Automapper
你可以这样做:

class Test 
{
    [JsonPropertyName("a")]
    public string A { get; set; }
}

然后有一个 DTO:

class TestDto
{
    public string A { get; set; }
}

并配置 Automapper:

cfg.CreateMap<Test, TestDto>().ReverseMap();

0
投票

使用 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;}
}

小提琴:https://dotnetfiddle.net/y7S22O

© www.soinside.com 2019 - 2024. All rights reserved.