检查嵌套json中的密钥名称

时间:2015-05-05 07:31:01

标签: c# json linq lambda

我需要检查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"
  },

我认为这是我最接近的,但它总是假的(即使我搜索现有的密钥): 内容是一个JObject。

var searchDate = content.Properties().Select(p => p.Value).Children().Any(p=>p.Contains("quality"));
编辑:我已将关键名称更改为“质量”,以澄清问题。 我还将使用另一个包含密钥“date”而不是“from”和“to”的json文件。分离我想知道的文件是否存在“日期”。

2 个答案:

答案 0 :(得分:3)

如果要检查的属性始终属于cargo:run属性中的项目,则可以这样做:

value

否则,您可能希望创建一个函数,以递归方式检查var isQualityExists = content["value"].Any(v => ((JObject)v).Properties() .Any(p => p.Name.Contains("quality")) ); 上是否存在特定的属性名称。

答案 1 :(得分:0)

日期在json中不存在。这就是为什么你会在其中一条评论中提到错误。 如果您要搜索密钥:"到"

if("to" in json_object) 
{
//your logic goes here
}