有什么方法可以检查JSON.NET中是否存在属性值?
例如:如果JSON响应体如下所示:
[
{
'name': 'S1',
'active': true,
'deviceId': 123,
},
{
'name': 'S2',
'active': true,
'deviceId': 123,
},
{
'name': 'S3',
'active': true,
'deviceId': 123,
}
]
如何检查响应体是否包含'S1'?
如果您想在C#中使用json,首先您需要反序列化为一个真实的类型。 在这种情况下,应该是这样的:
// The type of object inside your array
public class Dto
{
public string name;
public bool active;
public int deviceId;
}
//Then in the controller method receiving this call:
[HttpPost("containss1")]
public string ContainsS1(Dto[] payload)
{
return payload.Any(dto => dto.name == "S1");
}
当然,这是一个非常基本的示例,因此根据您的用例,您将拥有更多的示例。 但是,这里可以调用方法containss1
,它将返回数组是否在某处包含's1'。
另外,您通常使用PascalCase而不是camelCase,并告诉序列化程序在外壳之间进行转换。 JSON.NET可以为您实现这一点。
您可以将JSON解析为JArray
,然后检查数组项中的任何子属性是否包含S1
值
var json = JArray.Parse(jsonString);
var exist = json.Any(item => item.Children<JProperty>().Any(p => p.Value.Value<string>() == "S1"));