[C#]检查中嵌套 json 项名称

标签: json Linq Lambda C#
发布时间: 2017/2/27 4:26:35
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我需要检查是否键名存在在 json 文件中,但我不能弄清楚如何做它。

Json 文件︰

{
  "value": [
    {
      "from": 1430611201000,
      "to": 1430697600000,
      "ref": "2015-05-03",
      "value": "8.4",
      "quality": "Y"
    }
  ],
  "updated": 1430726400000,
  "parameter": {
    "key": "2",
    "name": "Lufttemperatur",
    "summary": "medelvärde 1 dygn, 1 gång/dygn, kl 00",
    "unit": "degree celsius"
  },

这是最接近我,但它将始终为 false (甚至当我搜索现有的密钥)︰ 内容是 JObject。

var searchDate = content.Properties().Select(p => p.Value).Children().Any(p=>p.Contains("quality"));

编辑︰ 我已经改变的关键的名称以"质量",为明确移情的问题。 我也将使用另一个 json 文件包含关键"日期"而不是"从"和"to"。将的文件分开,我想知道是"日期"或不存在。

解决方法 1:

如果要检查该属性是始终在中属于项目 value 属性,那么你可以这样做︰

var isQualityExists = 
            content["value"].Any(v => ((JObject)v).Properties()
                                                  .Any(p => p.Name.Contains("quality"))
                                );

否则,你可能想要创建一个函数,以递归方式检查特定的属性名称是否存在所有超过 JObject

赞助商