【问题标题】:Json.NET deserialization: handle varying property names [duplicate]Json.NET 反序列化:处理不同的属性名称
【发布时间】:2018-01-24 07:33:53
【问题描述】:

我目前正在尝试使用 Json.NET 反序列化从 Web API 返回的 JSON 字符串。我的问题是,在响应中有嵌套的属性总是具有相同的结构(因此通常应该反序列化为相同的对象类型),但名称不同。截图如下:

Json.NET 中是否有任何内置机制来处理这些记录对象?否则,处理此问题的最佳方法是什么?

非常感谢!

【问题讨论】:

  • 这好像是一本字典。

标签: c# .net json json.net deserialization


【解决方案1】:

您可以将其反序列化为字典,然后遍历键。

fiddle 中的一个示例)。

【讨论】:

    【解决方案2】:
    public class Records
    {
        [JsonProperty(PropertyName = "records")]
        public List<int> records { get; set; }
    
        [JsonProperty("items")]
        private List<int> items { set { records.AddRange(value); } }
    }
    

    您可以通过将其他列表分配给主要列表来破解它。

    var str = "{\"records\":[\"1\",\"2\"],\"items\":[\"3\",\"4\"]}";
    var json = JsonConvert.DeserializeObject<Records>(str);
    

    序列化后会得到

    {"records":[1,2,3,4]}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-25
      • 2019-11-02
      • 2021-05-26
      相关资源
      最近更新 更多