NewtonSoft JSON反序列化获取KEY值

时间:2017-06-13 14:07:10

标签: c# json parsing json.net

大家好日子。 我想知道怎么可能(如果是)做这样的技巧(我使用的是c#和NewtonSoft JSON库) 1.如果我寻找官方文档,就有这样的例子:`

string json = @"{
'Email': 'james@example.com',
  'Active': true,
  'CreatedDate': '2013-01-20T00:00:00Z',
  'Roles': [
    'User',
    'Admin'
  ]
}";

Account account = JsonConvert.DeserializeObject<Account>(json);

Console.WriteLine(account.Email);`

我同意,如果有效的话。我可以使用Email AS KEY找到Email VALUE。 但是,如果我不知道我得到的KEY,我怎么能找到所有对(Key:Value)?例如,如果我有一些JSON,如:

"1": { "2": "3", "4": "5" }
"a": { "b": "c", "d": "e" }

如果我硬编码KEYS,我可以找到VALUE,如:

dynamic JSONOutput = JsonConvert.DeserializeObject(HTMLOutput);
Console.WriteLine(JSONOutput["1"]["2"]); //Output is 3
Console.WriteLine(JSONOutput["1"]["4"]); //Output is 5
Console.WriteLine(JSONOutput["a"]["b"]); //Output is c
Console.WriteLine(JSONOutput["a"]["d"]); //Output is e

但是如何才能获得“1,2,a,d”等密钥呢? Thanx适合所有人

1 个答案:

答案 0 :(得分:2)

如果您按如下方式解析JSON:

var jObj = JObject.Parse(jsonString);

你可以迭代它的属性:

foreach(var kvp in jObj.Cast<KeyValuePair<string,JToken>>().ToList())
{
    //kvp.Key
    //kvp.Value
}