我有与以下格式相似的JSON:
{
"id": "S01",
"submittedBy": "A12345",
"orderData": {
"items": [
{
"key": "Item1",
"value": "10"
},
{
"key": "Item2",
"value": "20"
}
]
}
}
通过某种方式,我将这个JSON字符串放入应用程序的jsonString
变量中。
现在我有几个类似于以下的课程:
[DataContract]
public class Order
{
[DataMember(Name = "id")]
public string Id { get; set; }
[DataMember(Name = "submittedBy")]
public string SubmittedBy { get; set; }
[DataMember(Name = "orderData")]
public OrderData OrderData { get; set; }
}
[DataContract]
public class OrderData
{
[DataMember(Name = "items")]
public List<Items> Items { get; set; }
}
[DataContract]
public class Items
{
[DataMember(Name="key")]
public string Key { get; set; }
[DataMember(Name="value")]
public string Value { get; set; }
}
获取JSON字符串后,我正在执行此操作。
Order order = new Order();
order = JObject.Parse(jsonString).ToObject<Order>();
现在在order
对象中,如果我必须检查是否存在任何键:“ Item3”而不通过它进行循环,如何检查它?
非常感谢您的帮助。
PS:道歉题。欢迎提出任何建议/进行更合适的编辑。
答案 0 :(得分:1)
使用LINQ .Any()
:
order.OrderData.Items.Any(q => q.Key == "item3")
您可能还想添加一些空引用检查:
order.OrderData?.Items?.Any(q => q.Key == "item3") ?? false;
答案 1 :(得分:0)
像这样使用LINQ的Any()
method:
bool exists = order.OrderData != null &&
order.OrderData.Items != null &&
order.OrderData.Items.Any(x => x.Key == "Item3")
另请参阅此article。
侧面说明:代码中的new Order()
是多余的。您可以简化为:
Order order = JObject.Parse(jsonString).ToObject<Order>();