如何在Angular 5和Ionic 3中展示JSON子节点值而不显示父节点
提取JSON子节点值并忽略父节点的实现方案
嘿,这事儿好办!你就是想把JSON里那些嵌套在父节点(比如companies、centers)里的子节点内容单独拎出来打印,对吧?我给你用Python和JavaScript这俩常用语言分别演示怎么实现,包你一看就懂:
Python 实现
我们可以用Python内置的json模块解析数据,然后逐层提取子节点内容,完全避开父节点的键名:
import json # 你的原始JSON数据(我补全了centers的示例结构) raw_json = ''' [ { "companies": [ {"id": 1, "name": "Prueba", "company_number": "23423423A", "latitude": 241241.12, "longitude": 213213.12, "country": "ES"}, {"id": 2, "name": "Prueba2", "company_number": "23423423A", "latitude": 241241.12, "longitude": 213213.12, "country": "US"}, {"id": 3, "name": "Prueba3", "company_number": "23423423AB", "latitude": 241241.19, "longitude": 213213.20, "country": "US"} ] }, { "centers": [ {"id": 1, "name": "Center1", "address": "Main St 123", "country": "ES"}, {"id": 2, "name": "Center2", "address": "Oak Ave 456", "country": "US"} ] } ] ''' # 解析JSON字符串为Python对象 parsed_data = json.loads(raw_json) # 遍历外层数组中的每个对象 for parent_obj in parsed_data: # 提取每个父对象里的子数组(不管键是companies还是centers) for _, sub_nodes in parent_obj.items(): # 逐个打印子节点的详细内容 for node in sub_nodes: print("--- 子节点详情 ---") for key, value in node.items(): print(f"{key}: {value}") print("-----------------")
代码说明
- 先用
json.loads()把JSON字符串转成Python可操作的列表/字典 - 遍历外层数组里的每个父对象,用
items()获取父对象的键值对 - 直接取子数组(忽略父节点的键名),然后遍历子数组里的每个子节点,打印其所有键值对
- 如果只想打印格式化后的JSON子节点,可以把内部循环换成
print(json.dumps(node, indent=2))
JavaScript 实现
不管是浏览器环境还是Node.js,都可以用原生JS轻松实现这个需求:
// 你的原始JSON数据 const jsonData = [ { "companies": [ {"id": 1, "name": "Prueba", "company_number": "23423423A", "latitude": 241241.12, "longitude": 213213.12, "country": "ES"}, {"id": 2, "name": "Prueba2", "company_number": "23423423A", "latitude": 241241.12, "longitude": 213213.12, "country": "US"}, {"id": 3, "name": "Prueba3", "company_number": "23423423AB", "latitude": 241241.19, "longitude": 213213.20, "country": "US"} ] }, { "centers": [ {"id": 1, "name": "Center1", "address": "Main St 123", "country": "ES"}, {"id": 2, "name": "Center2", "address": "Oak Ave 456", "country": "US"} ] } ]; // 遍历外层数组 jsonData.forEach(parentObj => { // 遍历父对象的键值对 Object.entries(parentObj).forEach(([_, subNodes]) => { // 逐个输出子节点内容 subNodes.forEach(node => { console.log("--- 子节点详情 ---"); Object.entries(node).forEach(([key, value]) => { console.log(`${key}: ${value}`); }); console.log("-----------------"); // 若要输出格式化JSON,用下面这行: // console.log(JSON.stringify(node, null, 2)); }); }); });
代码说明
- 直接操作JSON对象(如果是字符串,先用
JSON.parse()转换) - 用
forEach遍历外层数组和父对象的键值对 - 忽略父节点键名,直接处理子数组里的每个节点,打印其键值对
- 同样,想要格式化JSON输出的话,用
JSON.stringify(node, null, 2)即可
内容的提问来源于stack exchange,提问作者JossephBot
相关产品推荐
相关产品推荐

