如何获取动态JSON结构指定层级下的下一级动态key值
能否通过索引直接获取动态key?
不能。你拿到的schedule['schedule']['1']['schedule']属于对象/字典类型,这类结构的键本身不支持直接通过数字索引读取,必须先把所有键提取为有序数组,再通过索引取值。
具体操作方法
分两种常用开发语言场景实现:
1. Python 场景
目标层级数据为字典类型,调用keys()方法提取所有键转列表后,即可用索引读取动态key:
# 先获取目标层级的字典 target_level = schedule['schedule']['1']['schedule'] # 提取所有key转为列表,取索引0的元素即为当前场景下的动态key 4 dynamic_key = list(target_level.keys())[0] # 后续可直接用这个key读取对应数据 target_data = target_level[dynamic_key]
如果该层级下有多个动态key,调整索引值即可,比如取第二个key就把[0]改为[1]。
2. JavaScript/Node.js 场景
目标层级为普通对象,用Object.keys()方法提取键数组后用索引读取:
const targetLevel = schedule['schedule']['1']['schedule'] // 提取所有key为数组,取索引0的元素即为动态key const dynamicKey = Object.keys(targetLevel)[0] // 读取对应数据 const targetData = targetLevel[dynamicKey]
注意:ES6标准之后普通对象的key会按插入顺序保存,如果你的业务对key的顺序有强要求,建议先确认JSON生成时的键插入顺序符合预期
异常兼容处理
如果担心该层级为空导致索引报错,可以加一层非空判断:
- Python 版本:
target_level = schedule['schedule']['1']['schedule'] key_list = list(target_level.keys()) if len(key_list) > 0: dynamic_key = key_list[0] else: # 自行处理无数据的场景 pass
- JavaScript 版本:
const targetLevel = schedule['schedule']['1']['schedule'] const keyList = Object.keys(targetLevel) if (keyList.length > 0) { const dynamicKey = keyList[0] } else { // 自行处理无数据的场景 }
内容的提问来源于stack exchange,提问作者Mr. Dandomi
相关产品推荐
相关产品推荐

