如何获取JSON外层首个键及数组内首个对象的键?
获取JSON数组内首个对象的键(JavaScript)
给定JSON数据:
{ "category":[ {"id":"1","name":"Decorative Objects", "bg_url":"decorative.jpg","url":"/decorative"}, {"id":"2","name":"Asian Arts", "bg_url":"asian_art.jpg","url":"/asian_arts"}, {"id":"3","name":"Glassware", "bg_url":"glassware.jpg","url":"/glassware"}, {"id":"4","name":"Antiques", "bg_url":"antique.jpg","url":"/antiques"} ] }
你已经通过 keyIndex = Object.keys(data)[0]; 拿到了外层第一个键,但后续尝试用 keyField = Object.keys(data)[keyIndex][0]; 获取数组内首个对象的键时失败,目标是得到第一个对象的键集合:id、name、bg_url、url。
正确解法
你找到的代码是可行的,完整代码如下:
keyIndex = Object.keys(data)[0]; keyField = Object.keys(data[keyIndex][0]);
为什么之前的代码出错?
Object.keys(data) 返回的是外层键组成的数组(这里是 ["category"]),keyIndex 的值是字符串 "category"。用字符串作为索引去访问 Object.keys(data) 这个数组,会得到 undefined,再取 [0] 自然无法得到想要的结果。
正确的逻辑步骤:
Object.keys(data)[0]拿到外层键"category"data[keyIndex]访问到对应的数组(即data["category"])data[keyIndex][0]获取数组的第一个对象Object.keys()提取该对象的所有键
更简洁的写法
如果不需要动态获取外层键(已知键名为 category),可以直接写:
const firstObjKeys = Object.keys(data.category[0]);
这样代码更直观,可读性更强。
内容的提问来源于stack exchange,提问作者Gagoman
相关产品推荐
相关产品推荐

