如何解析包含多个同结构子项的API返回JSON数据?
解析含多子项的meters数组API数据
当meters数组包含多个同结构子项(如FeedIn、SelfConsumption)时,核心思路是通过子项的标识字段(比如type/name)匹配目标数据,以下是两种实用的实现方式:
1. 遍历数组查找目标项
适合单次取值或需要做额外判断的场景,直接遍历meters数组,根据标识字段筛选出对应子项后提取数据:
# 遍历meters数组,匹配目标子项 for meter in parsed_power['energyDetails']['meters']: # 假设子项用'type'字段区分类型,根据实际字段调整 if meter['type'] == 'FeedIn': feed_in_value = meter['values'][0]['value'] elif meter['type'] == 'SelfConsumption': self_consumption_value = meter['values'][0]['value']
2. 构建映射字典(高效复用)
如果需要多次从meters中取值,先把数组转成以标识字段为键的字典,后续可以直接通过键名快速获取数据:
# 将meters数组转换为{类型: 子项数据}的映射 meter_map = {item['type']: item for item in parsed_power['energyDetails']['meters']} # 直接通过类型名提取对应值 feed_in_value = meter_map['FeedIn']['values'][0]['value'] self_consumption_value = meter_map['SelfConsumption']['values'][0]['value']
注意事项
- 如果API返回的子项区分字段不是
type(比如是name或其他自定义字段),只需将代码中的'type'替换为实际字段名即可。 - 若
values数组也存在多个元素,可根据需求遍历values或指定索引(如[1])提取对应数据。
内容的提问来源于stack exchange,提问作者Rafel Lampič
相关产品推荐
相关产品推荐

