提问者:小点点

检查C#中是否存在带有json响应体的属性值


有什么方法可以检查JSON.NET中是否存在属性值?

例如:如果JSON响应体如下所示:

[
{
'name': 'S1',
'active': true,
'deviceId': 123,
},

{
'name': 'S2',
'active': true,
'deviceId': 123,
},

{
'name': 'S3',
'active': true,
'deviceId': 123,
}
]

如何检查响应体是否包含'S1'?


共2个答案

匿名用户

如果您想在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"));