我从如下所示的网络服务接收 JSON:
{
"RESULTS": {
"1220": {
"DDR_TYPE_ID": 7,
"DDR_ID": 5199,
"DDR_NAME": "Mesa Building"
},
"5455": {
"DDR_TYPE_ID": 7,
"DDR_ID": 417,
"DDR_NAME": "Scottsdale Building"
},
"1462": {
"DDR_TYPE_ID": 12,
"DDR_ID": 3324,
"DDR_NAME": "Gentry Building"
}
}
}
我无法用我通常的方法真正序列化,因为这不是相同对象的数组,这要归功于奇怪的编号键。
我需要的只是 DDR_ID
值的列表。
有没有办法使用 Linq to JSON 从这个 JSON 中获取这些值?或者有更好的方法吗?
最佳答案
“奇怪的编号键”(或任何其他动态键)可以通过反序列化到字典来处理。因此,例如,如果您有这样的类(class):
public class MyJSON
{
public Dictionary<int,ResultItem> Results { get; set; }
}
public class ResultItem
{
public int DDR_ID { get; set; }
}
然后,在反序列化之后,您应该能够通过以下方式获取您的 ID:
var myObj = JsonConvert.DeserializeObject<MyJSON>(jsonString); // using JSON.Net
var ids = myObj.Results.Select(p => p.Value.DDR_ID);
这是一个 fiddle
关于c# - 如何将 Linq 与 JSON 一起使用以从这个奇怪的 JSON 中获取所有 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43127623/