c# - 如何将 Linq 与 JSON 一起使用以从这个奇怪的 JSON 中获取所有 ID?

标签 c# json linq

我从如下所示的网络服务接收 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/

相关文章:

c# - LINQ 等效于 std::partition

c# - 与 ConcurrentDictionary<Tkey, TValue> 一起使用时 C# LINQ OrderBy 线程安全吗?

c# - Dump() 对象到 JSON pretty-print 字符串

c# - 为什么我无法使用 DateTime.Now.ToString 方法获取 M/D/YYYY 中的完整日期?

javascript - 错误类型错误 : Cannot read property X of undefined

javascript - Rails 和 knockout.js 绑定(bind)嵌套元素而不在 fields_for 中使用 foreach

c# - Linq OrderBy 不对原始集合进行排序吗?

C# Task.Run 在进行多次迭代时跳过值,缺少数据

c# - IComparable CompareTo(),如何在 2 个不同的字段上进行比较

java - 创建 JSON 数据并解析为 swift