【问题标题】: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]}