如何将JSON指定节点的数组转为对象(仅硬编码students与student节点)
单元素数组转对象的实现方案(仅硬编码指定节点)
原始输入JSON
{ "students": { "a": "qw", "b": "er", "student": [ { "Id": "1", "details": { "q": "12", "w": "wer", "e": "rty", "r": "yui" } } ] } }
期望输出JSON
{ "students": { "a": "qw", "b": "er", "student": { "Id": "1", "details": { "q": "12", "w": "wer", "e": "rty", "r": "yui" } } } }
实现方法
JavaScript版本
// 原始JSON字符串 const originalJson = `{ "students": { "a": "qw", "b": "er", "student": [ { "Id": "1", "details": { "q": "12", "w": "wer", "e": "rty", "r": "yui" } } ] } }`; // 解析为JS对象 const data = JSON.parse(originalJson); // 仅硬编码students和student节点,处理单元素数组转对象 if (data.students?.student instanceof Array && data.students.student.length === 1) { data.students.student = data.students.student[0]; } // 转换回格式化后的JSON字符串 const transformedJson = JSON.stringify(data, null, 2); console.log(transformedJson);
Python版本
import json original_json = '''{ "students": { "a": "qw", "b": "er", "student": [ { "Id": "1", "details": { "q": "12", "w": "wer", "e": "rty", "r": "yui" } } ] } }''' # 解析为字典 data = json.loads(original_json) # 处理指定节点:判断是否为单元素数组,是则转为对象 if isinstance(data.get('students', {}).get('student'), list) and len(data['students']['student']) == 1: data['students']['student'] = data['students']['student'][0] # 转换回带格式的JSON字符串 transformed_json = json.dumps(data, indent=2) print(transformed_json)
方案说明
- 仅硬编码
students和student两个节点,不修改或依赖其他任何节点的结构,完全符合需求 - 逻辑简洁高效:先判断目标节点是否为数组且长度为1,满足条件则直接替换为数组的第一个元素
- 兼容性好:处理过程中保留了原始数据的所有其他字段和结构,不会破坏原有内容
内容的提问来源于stack exchange,提问作者techresearch
相关产品推荐
相关产品推荐

