检查json数组是否存在c#
本文关键字:存在 是否 数组 json 检查 | 更新日期: 2023-09-27 18:27:53
我有一个json对象,如下所示:
{
"Name": "Mike",
"Personaldetails": [
{
"Age": 25,
"Surname": "Barnes"
}
],
"Address": [
null
]
}
现在,我已经编写了C#来访问这段代码,并在"Personal Details"
数组中的每个对象上迭代并进入"Address"
数组。
我该如何写一个检查来查看数组是否为null?
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
}
}
}
由于似乎没有其他人注意到,下面是答案。。。
问题出在这段代码上:
"Address": [
null
]
您正在尝试检查Address
是否为null,但是此JSON并不代表null
Address
。它显示了一个有效的数组,其中只有一个null
对象。如果这是正确的,那么你可能想试试这个:
if(jsonObject.Address == null || (jsonObject.Address[0] == null))
{
return "null array";
}
首先,请注意使用==
检查相等性(而不是使用=
进行赋值)。
其次,这将检查Address
是否为null,或者数组的第一个对象是否为null
,我认为这就是您要做的。还可能值得添加一个长度检查,看看数组是否只是一个null元素,但这取决于您的需求
您缺少双"=="来检查比较,"="是一个赋值操作。
if(jsonObject.Address == null)
{
return "null array";
}
您的JSON应该是这样的。否则,您将不检查null数组,而是检查数组的第一个元素具有null值的数组。
{
"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";
}