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

如何将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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:26:08