如何过滤JArray?
How to filter JArray?
我有一个如下所示的 JArray,如何通过“to”和“from”来过滤它?我尝试了以下方法:
JArray ja_test = (JArray)(ja_chat
.Children<JArray>()
.Where(o => (int)o["data"]["from"] == 49 && (int)o["data"]["to"] == 10));
但它抛出:
Unable to cast object of type WhereEnumerableIterator'1[Newtonsoft.Json.Linq.JArray]
to type Newtonsoft.Json.Linq.JArray
如何实现?
[
{
"data": {
"to": 49,
"from": 50,
"text": "Hi Dev",
"files": [],
"msg_id": "__chat__",
"datetime": "2022-05-22 12:23:14"
}
},
{
"data": {
"to": 49,
"from": 10,
"text": "Hello Dev",
"files": [],
"msg_id": "__chat__",
"datetime": "2022-05-22 12:23:14"
}
}
]
你首先要解析json。试试这个,它将 return 一个 JObject
数组
var JArray jaChat = JArray.Parse(json);
JObject[] jaTest = jaChat.Where( o =>
(int)o["data"]["from"] == 10 && (int)o["data"]["to"] == 49)
.Select(o=> (JObject)o).ToArray();
或者如果你想要一个 JArray,你必须将 JObject[] 转换为 JArray
JArray jaTest1 = JArray.FromObject(jaTest);
// or from json
JArray jaTest = JArray.FromObject( jaChat.Where(o =>
(int)o["data"]["from"] == 10 && (int)o["data"]["to"] == 49));
我有一个如下所示的 JArray,如何通过“to”和“from”来过滤它?我尝试了以下方法:
JArray ja_test = (JArray)(ja_chat
.Children<JArray>()
.Where(o => (int)o["data"]["from"] == 49 && (int)o["data"]["to"] == 10));
但它抛出:
Unable to cast object of type
WhereEnumerableIterator'1[Newtonsoft.Json.Linq.JArray]
to typeNewtonsoft.Json.Linq.JArray
如何实现?
[
{
"data": {
"to": 49,
"from": 50,
"text": "Hi Dev",
"files": [],
"msg_id": "__chat__",
"datetime": "2022-05-22 12:23:14"
}
},
{
"data": {
"to": 49,
"from": 10,
"text": "Hello Dev",
"files": [],
"msg_id": "__chat__",
"datetime": "2022-05-22 12:23:14"
}
}
]
你首先要解析json。试试这个,它将 return 一个 JObject
数组var JArray jaChat = JArray.Parse(json);
JObject[] jaTest = jaChat.Where( o =>
(int)o["data"]["from"] == 10 && (int)o["data"]["to"] == 49)
.Select(o=> (JObject)o).ToArray();
或者如果你想要一个 JArray,你必须将 JObject[] 转换为 JArray
JArray jaTest1 = JArray.FromObject(jaTest);
// or from json
JArray jaTest = JArray.FromObject( jaChat.Where(o =>
(int)o["data"]["from"] == 10 && (int)o["data"]["to"] == 49));