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

如何无需定义实体类从JSON响应中提取指定的单个字段值

解决方案

报错原因

你之前的代码报错是因为JObject.Parse(text).Children().First()获取到的是Transactions对应的JProperty属性节点,而非节点存储的交易数组值,直接调用Values<string>("Code")就会触发类型不匹配的异常。

无需定义实体类的正确写法

基于Newtonsoft.Json(你当前使用的库)

最简单的写法直接按JSON层级取值即可:

var content = new StringContent(request, Encoding.UTF8, "application/json");
var response = await HttpClient.PostAsync(postURL, content);
var text = await response.Content.ReadAsStringAsync();

JObject jobj = JObject.Parse(text);
// 直接取第一个交易的Code字段
string code = jobj["Transactions"][0]["Code"].ToString();

如果需要加空防护避免空引用异常,可以写为:

string code = jobj.Value<JArray>("Transactions")?.FirstOrDefault()?.Value<string>("Code");
// 取值失败时code为null,不会直接抛空引用

基于.NET自带System.Text.Json(无需引入第三方包)

如果你的项目是.NET Core 3.0+版本,可以用框架自带的JSON库实现,不需要额外安装Newtonsoft.Json:

using System.Text.Json;

var content = new StringContent(request, Encoding.UTF8, "application/json");
var response = await HttpClient.PostAsync(postURL, content);
var text = await response.Content.ReadAsStringAsync();

using JsonDocument doc = JsonDocument.Parse(text);
string code = doc.RootElement
    .GetProperty("Transactions")
    .EnumerateArray()
    .First()
    .GetProperty("Code")
    .GetString();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:24:00