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

C#如何从JSON结果中仅提取CardTransactions数组和值为0的status字段

C# 提取JSON指定字段实现方案

两种主流实现方式可选,均会自动忽略不需要的JSON字段,仅提取你需要的CardTransactions数组和response节点下值为0的status字段:


方案1:使用Newtonsoft.Json(Json.NET,兼容所有.NET版本)

步骤1:安装依赖

NuGet包管理器搜索安装 Newtonsoft.Json 即可。

步骤2:定义仅包含所需字段的实体类

// 对应CardTransactions数组内的交易元素
public class CardTransaction
{
    public string TransactionDate { get; set; }
    public string InvoiceNo { get; set; }
    public decimal Amount { get; set; }
}

// 对应JSON根节点
public class ResponseRoot
{
    public InnerResponse Response { get; set; }
}

// 对应response内层节点,仅定义需要的两个字段
public class InnerResponse
{
    public List<CardTransaction> CardTransactions { get; set; }
    public int Status { get; set; }
}

步骤3:反序列化提取数据

// jsonStr为你拿到的原始JSON字符串
var result = JsonConvert.DeserializeObject<ResponseRoot>(jsonStr);

// 提取目标数据
List<CardTransaction> transactions = result.Response.CardTransactions;
int status = result.Response.Status;

// 可自行判断status是否等于0再执行业务逻辑
if (status == 0)
{
    // 业务逻辑
}

轻量无实体类实现

如果不想定义实体类,可以直接用JObject解析:

var jObj = JObject.Parse(jsonStr);
int status = jObj["response"]["status"].Value<int>();
List<CardTransaction> transactions = jObj["response"]["CardTransactions"].ToObject<List<CardTransaction>>();

方案2:使用.NET 自带System.Text.Json(.NET Core 3.0+ / .NET 5+ 适用,无需额外安装依赖)

实体类定义和方案1完全一致,反序列化代码如下:

var result = System.Text.Json.JsonSerializer.Deserialize<ResponseRoot>(jsonStr);
List<CardTransaction> transactions = result.Response.CardTransactions;
int status = result.Response.Status;

无实体类实现

var jsonNode = System.Text.Json.Nodes.JsonNode.Parse(jsonStr);
int status = jsonNode["response"]["status"].GetValue<int>();
List<CardTransaction> transactions = System.Text.Json.JsonSerializer.Deserialize<List<CardTransaction>>(jsonNode["response"]["CardTransactions"]);

注意事项

  • 未在实体类中定义的JSON字段会自动被反序列化工具忽略,无需额外编写过滤规则
  • 若使用System.Text.Json时出现属性名大小写不匹配导致的取值为null问题,可添加忽略大小写配置:
var options = new System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true };
var result = System.Text.Json.JsonSerializer.Deserialize<ResponseRoot>(jsonStr, options);

内容的提问来源于stack exchange,提问作者Wei Chen Chen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:45:07