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

未知父对象键时,如何直接访问JSON中的totalSize与records?

解决JSON动态父键下的totalSize和records获取问题

核心思路

由于包含totalSize和records的父对象键名不固定,我们可以遍历JSON顶级对象的所有属性,筛选出同时包含这两个字段的子对象,再从中提取所需数据。

完整代码示例

1. 处理外层为数组的JSON(你的原始JSON结构)

// 解析JSON数组
JArray jsonArray = JArray.Parse(json);
// 取数组第一个元素转为JObject
JObject jsonObject = jsonArray[0] as JObject;

// 遍历所有顶级属性,定位包含totalSize和records的目标对象
var targetContainer = jsonObject.Properties()
    .Where(prop => prop.Value is JObject)
    .Select(prop => prop.Value as JObject)
    .FirstOrDefault(container => container.ContainsKey("totalSize") && container.ContainsKey("records"));

// 提取数据
if (targetContainer != null)
{
    int totalSize = targetContainer.Value<int>("totalSize");
    if (totalSize > 0)
    {
        JArray records = targetContainer.Value<JArray>("records");
        // 这里编写对records的处理逻辑
    }
}

2. 若外层直接是对象的情况(扩展场景)

如果你的JSON外层不是数组,直接用JObject.Parse解析后,执行上述遍历逻辑即可:

JObject jsonObject = JObject.Parse(json);
var targetContainer = jsonObject.Properties()
    .Where(prop => prop.Value is JObject)
    .Select(prop => prop.Value as JObject)
    .FirstOrDefault(container => container.ContainsKey("totalSize") && container.ContainsKey("records"));

// 后续数据提取逻辑同上

关键逻辑说明

  • 用jsonObject.Properties()遍历所有顶级属性,彻底摆脱固定键名的依赖
  • 通过ContainsKey("totalSize") && ContainsKey("records")精准定位目标容器对象
  • 用FirstOrDefault获取第一个符合条件的对象,如果存在多个符合条件的容器,可根据需求改为ToList()批量处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:53:10