Json.NET反序列化:处理不同的属性名称

时间:2018-01-24 07:33:54

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

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

enter image description here

Json.NET中是否有内置机制来处理这些记录对象?否则,最好的办法是什么?

非常感谢!

2 个答案:

答案 0 :(得分:1)

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]}

答案 1 :(得分:1)

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

(此fiddle中的示例)。