使用Newtonsoft Json获取json属性类型

时间:2018-04-26 22:54:02

标签: json json.net .net-core

我用JObject.Parse(json)解析了一个Json字符串,我试图遍历这些属性。我发现访问json类型的唯一方法是通过它的父节点,如下所示:

string json = @"{
    CPU: 'Intel',
    Drives: [ 'DVD read/writer', '500 gigabyte hard drive'
    ]
}";
JObject o = JObject.Parse(json);

foreach (var p in o.Properties()) 
{
    Console.WriteLine("name:" + p.Name + ", value: " + p.Value);
    Console.WriteLine("o[p.Name].Type: " + o[p.Name].Type);  // correctly returns js type
    Console.WriteLine("p.Type: " + p.Type);  // returns Property for every item
    Console.WriteLine("p.GetType(): " + p.GetType()); // returns Newtonsoft.Json.Linq.JProperty for every item
    Console.WriteLine();
}

我想必须有一些方法从属性中获取json类型。 (现场小提琴here

1 个答案:

答案 0 :(得分:1)

Value的{​​{1}}是JProperty。您可以使用JToken上的Type属性来获取其JSON类型。所以你只需要使用JToken来获得你想要的东西。

示例小提琴:https://dotnetfiddle.net/CtuGGz