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

如何用C# Newtonsoft.Json提取嵌套JSON中return节点的所有值?

问题解决方法

错误原因

你的代码中错误使用了数组索引[0],但目标JSON里的result、data、getEstelam3Response、return都是单个对象(用{}包裹),并非数组([]包裹),所以索引[0]会导致无法定位到对应节点,最终返回空值。

修正单个字段提取

要提取return节点下的单个字段(比如birthDate),修正后的代码如下:

var obj = JObject.Parse(responseBody);
// 去掉不必要的数组索引,直接按对象层级访问
string birthDate = (string)obj.SelectToken("result.data.getEstelam3Response.return.birthDate");
Response.Write(birthDate); // 输出:13650412

提取return节点下所有键值对

如果需要获取return节点下的所有键值对,可以遍历该对象:

var obj = JObject.Parse(responseBody);
JToken returnNode = obj.SelectToken("result.data.getEstelam3Response.return");

foreach (var prop in returnNode.Children<JProperty>())
{
    string key = prop.Name;
    string value;
    // 处理数组类型的字段(比如bookRow、deathStatus)
    if (prop.Value.Type == JTokenType.Array)
    {
        value = string.Join(",", prop.Value.ToObject<string[]>());
    }
    else
    {
        value = prop.Value.ToString();
    }
    Response.Write($"{key}: {value}<br/>");
}

额外说明

注意到name、family等字段的值是Base64编码后的内容,如果你需要还原成明文,可以用Base64解码:

string encodedName = (string)returnNode["name"];
string decodedName = Encoding.UTF8.GetString(Convert.FromBase64String(encodedName));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:18:10