c# - 分配给单个属性的多个 JsonProperty 名称

我有两种格式的 JSON,我想将它们反序列化为一个类。 我知道我们不能将两个 [JsonProperty] 属性应用于一个属性。

您能建议我实现这一目标的方法吗?

string json1 = @"
    {
        'field1': '123456789012345',
        'specifications': {
            'name1': 'HFE'
        }
    }";

string json2 = @"
    {
        'field1': '123456789012345',
        'specifications': {
            'name2': 'HFE'
        }
    }";

public class Specifications
{
    [JsonProperty("name1")]
    public string CodeModel { get; set; }
}

public class ClassToDeserialize
{
    [JsonProperty("field1")]
    public string Vin { get; set; }

    [JsonProperty("specification")]
    public Specifications Specifications { get; set; }        
}

我希望 name1name2 都反序列化为规范类的 name1 属性。

最佳答案

一个不需要转换器的简单解决方案:只需向您的类添加第二个私有(private)属性,用 [JsonProperty("name2")] 标记它,然后设置第一个属性:

public class Specifications
{
    [JsonProperty("name1")]
    public string CodeModel { get; set; }

    [JsonProperty("name2")]
    private string CodeModel2 { set { CodeModel = value; } }
}

fiddle :https://dotnetfiddle.net/z3KJj5

https://stackoverflow.com/questions/43714050/

相关文章:

json - 已启用 CORS,但在 POST JSON 时,预检响应的 HTTP 状态代码 404

ruby-on-rails - 为什么在 Ubuntu 中安装 JSON gem 时会出错?

javascript - 如何在 javascript/jquery 中构建 json 字符串?

javascript - 从 JSON 对象中删除键值对

json - 如何使用 Powershell 将 JSON 对象保存到文件中?

c++ - JSONCPP 写入文件

c# - 在 C# 中解析 Json rest api 响应

c# - 如何使用 C#/LINQ 将 XML 转换为 JSON?

javascript - 来自json对象的Angular.js格式日期

java - 如何在 JAVA 中对 JSONArray 进行排序