如何将JSON中resources字段的数组转为单个值并保留首个元素?
问题描述
我接收到的JSON数据里,resources字段有时是单个值,有时是数组,需要统一转换成单个值,只保留数组的第一个元素。试过一些方法,但要么删除整行要么保留所有值,请问怎么实现?
原始JSON示例:
{"result": {"data": [{"postman": "12345","recordCase": "12","TypOfClient": "Small","active": "Yes","validFrom": "2020-09-03","activeGrades": [{"resources": "100","accounts": "1234551"}],"validTo": "4712-12-31"},{"postman": "12345","recordCase": "12","TypOfClient": "Small","active": "Yes","validFrom": "2020-09-03","activeGrades": [{"resources": ["100", "200", "500"],"accounts": "1234551"}],"validTo": "4712-12-31"}],"lastPage": true},"status": "Finished"}
期望结果:
{"result": {"data": [{"postman": "12345","recordCase": "12","TypOfClient": "Small","active": "Yes","validFrom": "2020-09-03","activeGrades": [{"resources": "100","accounts": "1234551"}],"validTo": "2026-12-31"},{"postman": "224499","recordCase": "13","TypOfClient": "Small","active": "Yes","validFrom": "2020-09-11","activeGrades": [{"resources": "100","accounts": "1234551"}],"validTo": "2025-12-31"}],"lastPage": true},"status": "Finished"}
解决方案
可以通过遍历JSON结构,判断resources的类型来处理:如果是数组就取第一个元素,是单个值则直接保留。以下是Python的实现示例:
import json # 原始JSON字符串 raw_json = '''{"result": {"data": [{"postman": "12345","recordCase": "12","TypOfClient": "Small","active": "Yes","validFrom": "2020-09-03","activeGrades": [{"resources": "100","accounts": "1234551"}],"validTo": "4712-12-31"},{"postman": "12345","recordCase": "12","TypOfClient": "Small","active": "Yes","validFrom": "2020-09-03","activeGrades": [{"resources": ["100", "200", "500"],"accounts": "1234551"}],"validTo": "4712-12-31"}],"lastPage": true},"status": "Finished"}''' # 解析为Python字典 data = json.loads(raw_json) # 遍历处理每个数据条目 for item in data['result']['data']: for grade in item['activeGrades']: # 判断resources是否为列表类型 if isinstance(grade['resources'], list): # 替换为列表第一个元素 grade['resources'] = grade['resources'][0] # 转换回格式化的JSON字符串 processed_json = json.dumps(data, indent=2) print(processed_json)
如果用其他编程语言处理,核心逻辑一致:找到resources字段,判断其类型,数组则取首元素,非数组则保持原样。
内容的提问来源于stack exchange,提问作者Sinuers
相关产品推荐
相关产品推荐

