如何在JavaScript中从JSON数组提取指定address子字段并重组结构
问题描述
我有一个包含多个JSON对象的输入数组,每个JSON对象均包含相同的address字段。需要从中提取所有address下的street、name、type字段,并整理为指定的JSON结构。
输入示例:
[ { "address": { "street" : "aaaa", "name": "dsd", "type": "sds" } }, { "address": { "street" : "bbbb", "name": "gdg", "type": "gdg" } }, ... ]
期望输出示例:
{"address": [ { "street" : "aaaa", "name": "dsd", "type": "sds" }, { "street" : "bbbb", "name": "gdg", "type": "gdg" }, ... ] }
解决方案
JavaScript实现
遍历输入数组提取目标字段,分两种场景处理:
// 场景1:确认address仅包含street、name、type三个字段时,直接提取 const input = [/* 你的输入数组 */]; const output = { address: input.map(item => item.address) }; console.log(JSON.stringify(output, null, 2));
// 场景2:需严格过滤冗余字段,仅保留指定的三个字段 const input = [/* 你的输入数组 */]; const output = { address: input.map(({ address: { street, name, type } }) => ({ street, name, type })) }; console.log(JSON.stringify(output, null, 2));
Python实现
用列表推导式完成字段提取与结构整理:
import json # 场景1:直接提取address字段 input_data = [/* 你的输入数组 */] output = { "address": [item["address"] for item in input_data] } print(json.dumps(output, indent=2))
import json # 场景2:严格保留指定字段 input_data = [/* 你的输入数组 */] output = { "address": [ { "street": item["address"]["street"], "name": item["address"]["name"], "type": item["address"]["type"] } for item in input_data ] } print(json.dumps(output, indent=2))
说明
- 第一种写法代码简洁,适合明确
address无冗余字段的场景; - 第二种写法更严谨,即使
address存在其他字段,也只会保留指定的三个字段,确保输出结构完全符合要求。
内容的提问来源于stack exchange,提问作者duolanierduone
相关产品推荐
相关产品推荐

