You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 21:17:30