JSON 序列化和反序列化使用不同的属性名称

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

使用

System.Text.Json
,我有一个客户端应用程序,它仅从我的 API 上的类中读取属性。我的 API,首先调用外部 API 来获取一些数据,然后将其返回到我的客户端应用程序。

我想要完成的是在我的 API 中使用 1 个类,它将使用其命名概念从外部源读取/解析 json,而我的 API 会输出具有不同属性名称的相同类。

例如:

public class Event {
    public int Id { get; set; }
    public string Name { get; set; }
}

外部 API 返回

{ "event_id": 1, "ourName" : "Test" }
,我的 API 应以
{ "id" : 1, "name" : "Test }

返回给我的客户端

我知道我可以创建一个单独的模型,然后手动(或使用

AutoMapper
)映射字段。

我正在寻找一种方法,也许使用某种

Attribute
,我可以定义用于序列化的名称和用于反序列化的另一个名称。像这样,序列化将仅使用属性的名称,但 ddserialization 将使用属性。

public class Event {
    [JsonDeserialize("event_id")]
    public int Id { get; set; }
    [JsonDeserialize("ourName")]
    public string Name { get; set; }
}

我确信我不是第一个想要这个的人,但我的搜索技巧缺乏,因为我没有找到任何东西。也许我没有搜索正确的关键字。

谢谢!

c# json serialization deserialization
1个回答
0
投票

您尝试过使用 [JsonPropertyName("ExternalJsonPropertyName")] 吗?

在这里,如果您还没有看到过,您会找到更多相关信息。

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