如何在JArray中查询过滤?请求筛选type为A的JArray元素
过滤JArray中type=A元素的实现方案
没问题,这事儿用Newtonsoft.Json(也就是Json.NET)就能轻松搞定,我给你两种常见的实现方式,你按需选就行:
先明确你的原始JArray数据(整理后):
JArray jArray = JArray.Parse(@"[ { ""type"": ""A"", ""serverTime"": ""2020-08-14T12:49:18.893+07:00"" }, { ""type"": ""A"", ""serverTime"": ""2020-08-14T12:50:08.021+07:00"" }, { ""serverTime"": ""2020-08-14T12:50:08.021+07:00"", ""type"": ""C"" } ]");
方法一:使用LINQ查询(简洁高效)
这种写法代码量少、可读性高,适合大多数场景:
using Newtonsoft.Json.Linq; using System.Linq; // 过滤出type等于"A"的元素,生成新JArray JArray filteredJArray = new JArray( jArray.OfType<JObject>() .Where(obj => obj["type"]?.Value<string>() == "A") );
小说明:
OfType<JObject>():确保我们处理的是JObject类型元素,避免非对象类型的干扰obj["type"]?.Value<string>():用?.安全获取type字段值,防止字段不存在时触发空引用异常- 最后把过滤结果传入JArray构造函数,直接生成目标数组
方法二:传统循环遍历(支持精细控制)
如果需要在过滤时加自定义逻辑,或者你更习惯循环写法,试试这种:
using Newtonsoft.Json.Linq; JArray filteredJArray = new JArray(); foreach (var item in jArray) { JObject obj = item as JObject; if (obj != null) { string type = obj["type"]?.Value<string>(); if (type == "A") { filteredJArray.Add(obj); } } }
重要提醒
别忘啦!要确保你的项目已经安装了Newtonsoft.Json NuGet包,没装的话可以在NuGet包管理器搜索安装,或者用包管理器控制台执行命令:
Install-Package Newtonsoft.Json
内容的提问来源于stack exchange,提问作者DevDon
相关产品推荐
相关产品推荐

