C# 检查json数组是否存在#
我有一个json对象,如下所示:C# 检查json数组是否存在#,c#,json.net,C#,Json.net,我有一个json对象,如下所示: { "Name": "Mike", "Personaldetails": [ { "Age": 25, "Surname": "Barnes" } ], "Address": [ null ] } 现在我已经编写了C#来访问这段代码,并在“Personal Details”数组和“Address”数组中迭代每个对象 如何编写检
{
"Name": "Mike",
"Personaldetails": [
{
"Age": 25,
"Surname": "Barnes"
}
],
"Address": [
null
]
}
现在我已经编写了C#来访问这段代码,并在“Personal Details”
数组和“Address”
数组中迭代每个对象
如何编写检查以查看数组是否为空
dynamic jsonObject = JsonConvert.DeserializeObject(data);
foreach (var obj in jsonObject.Personaldetails)
{
if (obj.Age = 24)
{
//do stuff
}
}
//This is where I am stuck
if(jsonObject.Address = null)
{
return "null array";
}
//If another json stream was not null at "Address" array
else
{
foreach (var obj in jsonObject.Address)
{
if (obj.arrayItem == "Something")
{
//do stuff
}
}
}
您缺少用于检查比较的双精度“==”是一个赋值操作
if(jsonObject.Address == null)
{
return "null array";
}
您的JSON应该如下所示。否则,您不会检查空数组,而是检查数组的第一个元素具有空值的数组
{
"Name": "Mike",
"Personaldetails": [
{
"Age": 25,
"Surname": "Barnes"
}
],
"Address": null
}
那么代码如下所示:
if(jsonObject.Address == null)
{
return "null array";
}
如果需要保留原始JSON,您可以随时进行如下检查:
if(jsonObject.Address.Length > 0 && jsonObject.Address[0] == null)
{
return "null array";
}
没错,似乎没有其他人注意到,答案如下 问题在于这段代码:
"Address": [
null
]
您正在尝试检查地址
是否为空,但是此JSON不表示空
地址
。它显示一个有效数组,其中有一个null
对象。如果这是正确的,那么您可能希望尝试以下方法:
if(jsonObject.Address == null || (jsonObject.Address[0] == null))
{
return "null array";
}
首先,注意使用=
检查相等性(而不是=
进行赋值)
其次,这将检查
地址
是否为null,或者数组的第一个对象是否为null
,我假设这就是您正在尝试执行的操作。可能还需要添加一个长度检查,以查看数组是否只是一个空元素,但这取决于您的要求您需要在if语句中使用==而不是=进行比较您发布的不是有效的JSON(特别是Personaldetails
属性的值).现在高兴了吗@Jonesy和@Andrew?我们想帮忙,别紧张。此外,您的代码也没有反映这些更新的更改。不过,这仍然不会为我运行。我得到一个运行时错误,Newtonsoft.Json.Linq.JObject
不包含个人详细信息的定义。你在使用JSON.NET吗?是的,但问题是数组不是空的。它是一个包含单个空值的数组。如果您的JSON无效,请使用或验证您的JSON。这是您创建的JSON还是正在传递给您的JSON?不,我没有将它传递给我@musefan,我很快创建了它,但忘记了对JSON数组中的项目使用{}
。所以请大家注意,这只是一个简单的错误,我已经纠正并验证了。如果您查看我的问题编辑时间,您将看到我已经纠正了json示例。.count()
??a) 以小写字母b)Linq开头,带dynamic?哇@musefan你真是太棒了,重申了之前发布的答案。@RobCarroll:错了,你的答案没有提到在我开始写答案时检查数组中的第一项。当我开始写作时,您的回答只是对=
=
解决方案进行了评论,这只是问题的一部分problem@RobCarroll首先,运算符应该是|
而不是&&
。其次,您的Count()
将引发异常。我猜你没有检查就把它贴了。。。。