如何在通用JSON中获取所有子代以及所有子代的子代以及其他大子代的总数

时间:2019-04-01 15:24:18

标签: c# json linq

我有一个JSON文件,我必须在其中验证其所有节点和子节点的数量。但是,我找不到找到这些计数的通用方法

这是JSON文件的外观

{
  "total": 100,
  "offset": 0,
  "sources_used": [
    {
      "source": "mysource",
      "source_last_updated": "2018-10-24T16:16:10.698+00:00",
      "last_imported": "2019-01-17T22:13:03.861+00:00",
      "import_rate": ""
    }
  ],
  "search_performed_at": "2019-01-17T22:39:01.034+00:00",
  "results": [
    {
      "id": "id1",
      "label": "label1",
      "type": [
        "Countries"
      ],
      "sub_class_of": [

      ],
      ...............................

我必须确保顶部的total值对应于results元素的节点/子节点数量

我能够成功将JSON文件解析为.NET JSON对象

string contents = File.ReadAllText("jsonfile.json");
var jsonobject = JObject.Parse(contents);

现在的问题是,如何获得results元素的所有子元素/所有元素,以便可以针对total元素进行验证

2 个答案:

答案 0 :(得分:0)

JObject.Parse将文本解析为通用的object,并不能说明导入的JSON的结构。

相反,如果您创建一个紧密表示您的JSON内容的类(例如,通过http://json2csharp.com/之类的在线工具),则可以运行JsonConvert.DeserializeObject<RootObject>(yourJsonString)

RootObject将包含Results类型的List<T>属性,您可以针对该属性执行Count

答案 1 :(得分:0)

根据@peinearydevelopment的建议,此解决方案最有效

var count = (taxonomy.JSONStructure["results"] as JArray).Count();