Angular如何从嵌套JSON对象数组中提取images节点下各规格的url字段
解决方案
以下分别提供几种常用开发场景下的实现方式:
- JavaScript 运行环境实现
// 已将原始JSON解析为obj变量 const allImageUrls = [] // 遍历main下的二维数组 obj.main.forEach(level1Arr => { level1Arr.forEach(mainItem => { // 兼容content/items字段缺失的场景 mainItem.content?.items?.forEach(contentItem => { const imgLists = contentItem.images?.lists if (!imgLists) return // 遍历所有图片规格(small/original/large/medium等) Object.values(imgLists).forEach(specImgList => { specImgList.forEach(img => { // 仅收集有值的url,可根据需求去掉该判断 if (img.url) allImageUrls.push(img.url) }) }) }) }) })
- Python 实现
import json # 加载原始JSON数据,json_str为原始JSON字符串 data = json.loads(json_str) all_image_urls = [] for level1_arr in data["main"]: for main_item in level1_arr: content = main_item.get("content", {}) content_items = content.get("items", []) for content_item in content_items: img_lists = content_item.get("images", {}).get("lists", {}) # 遍历所有规格的图片列表 for spec_img_list in img_lists.values(): for img in spec_img_list: img_url = img.get("url") if img_url: all_image_urls.append(img_url)
- 命令行工具jq实现(适合快速批量处理JSON文件)
# 假设原始JSON存储在data.json文件中 jq '.main[][] | .content.items[] | .images.lists | values[] | .[] | .url' data.json
如果需要同时保留图片对应的规格信息,可将收集逻辑调整为存储键值对,比如{ "spec": "small", "url": "xxx" }的格式即可。
内容的提问来源于stack exchange,提问作者Daniel Vágner
相关产品推荐
相关产品推荐

