使用任意数字键和对象数组值解析嵌套字典

时间:2018-05-15 07:18:38

标签: c# json json.net

给出json字符串

var testJson = @"{'entry1': {
                       '49208118': [
                          {
                             'description': 'just a description'
                          },
                          {
                             'description': 'another description' 
                          }
                       ],
                       '29439559': [
                          {
                             'description': 'just a description'
                          },
                          {
                             'description': 'another description' 
                          }
                       ]
                     }
                }";

可以通过

检索键49208118的数组值
var root = JToken.Parse(testJson);
var descriptions = root.SelectTokens("..49208118[*]").ToList();

根据this answer

但是如何将entry1下的整个子结构解析为字典

 Dictionary<string, JArray> descriptions;

将数字id映射到JObject s的数组?

2 个答案:

答案 0 :(得分:1)

这个怎么样:

string selector = String.Format("..{0}[*]", yourKey);
var descriptions = root.SelectTokens(selector).ToList();

答案 1 :(得分:1)

由于问题是如何解析entry1Dictionary<string, JArray> - 最简单的选择是:

JToken root = JToken.Parse(testJson);
Dictionary<string, JArray> descriptions = root["entry1"].ToObject<Dictionary<string, JArray>>();

Json.NET允许在解析时没有问题地混合.NET类(Dictionary)和他自己的类(JArray)。