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

使用Object.keys().length获取REST返回JSON记录数返回undefined

解决JSON对象中获取记录数量返回undefined的问题

嘿,我来帮你捋清楚这个问题!你现在的核心问题是找错了要计算长度的目标层级,直接用Object.keys(json).length算的是整个顶层JSON对象的键数量,而不是你要的rows/records数组里的记录数,而且如果不小心还可能因为JSON没正确解析导致返回undefined。

先给你拆解下问题:

  • 你预期的记录数是1,说明你的JSON里肯定有一个数组(比如rows),里面装着1条记录,但这个数组是嵌套在顶层对象里的。
  • Object.keys(json).length只会返回顶层对象有多少个键(比如如果顶层是{ "rows": [...] },那这个值是1),但这不是你要的记录数。

正确的解决步骤:

  1. 先确保JSON已正确解析:如果从接口拿到的是字符串,一定要先用JSON.parse()转换成JS对象,不然直接操作会出问题。
  2. 精准定位记录数组:找到存储记录的那个数组对应的键路径,然后直接取数组的length属性(数组本身就有length,不用Object.keys)。

举个实际例子,假设你的返回JSON是这样的(符合你预期1条记录的情况):

{
  "code": 200,
  "msg": "success",
  "rows": [
    { "id": 1, "name": "测试记录" }
  ]
}

那获取记录数的代码应该是:

// 假设已经把接口返回的JSON字符串解析成了responseObj
const recordCount = responseObj.rows.length;
console.log(recordCount); // 输出1,就是你要的结果

避坑提醒:

  • 键名要完全匹配:JSON的键是大小写敏感的,别把rows写成Rows或者ROWS,不然会拿到undefined。
  • 处理空数据的情况:如果接口可能返回空数组或者没有rows键,可以用可选链操作符避免报错:
    const recordCount = responseObj?.rows?.length || 0;
    
  • 先确认JSON结构:可以用console.log(json)把整个对象打出来,看看rows/records到底在哪个层级,别瞎猜路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:24:11