如何从JSON对象中批量筛选指定字段并输出目标JSON结构?
批量筛选JSON字段的实现方案
问题说明
原始JSON数据:
{ "hits":[ { "date": "10142201", "name": "jeremy", "age":"19", "identity":"A" }, { "date":"10142202", "name": "zach", "age": "20", "identity":"B" }, { "date":"10142203", "name": "Jack", "age": "21", "identity":"C" }, { "date":"10142204", "name": "Jimmy", "age":"23", "identity":"D" } ], "total": "4", "name": "generic-names", "identity": "generic-identity" }
需要筛选出hits数组中每个对象的name字段,以及顶层的total字段,目标输出:
{ "hits":[ { "name": "jeremy" }, { "name": "zach" }, { "name": "Jack" }, { "name": "Jimmy" } ], "total": "4" }
当前仅能通过GET参数单次获取一个字段,需实现批量筛选并输出目标JSON。
解决方案
1. 后端直接处理(推荐)
先获取完整的原始JSON数据,再手动提取所需字段,返回处理后的结果:
Node.js 示例
// 假设已获取原始数据存入originalData变量 const filteredData = { hits: originalData.hits.map(item => ({ name: item.name })), total: originalData.total }; // 将筛选后的数据作为响应返回 res.json(filteredData);
Python 示例
import json from flask import jsonify # 假设已获取原始数据存入original_data字典 filtered_data = { "hits": [{"name": item["name"]} for item in original_data["hits"]], "total": original_data["total"] } # 返回筛选后的JSON响应 return jsonify(filtered_data)
2. 前端获取数据后处理
如果无法修改后端逻辑,可在前端拿到完整数据后自行筛选:
fetch('你的API地址') .then(response => response.json()) .then(originalData => { const filteredData = { hits: originalData.hits.map(item => ({ name: item.name })), total: originalData.total }; // 后续使用筛选后的数据 console.log(filteredData); });
3. 扩展GET参数规则(若API可修改)
约定用逗号分隔的GET参数批量指定字段,比如?fields=total,hits.name,后端解析该参数后批量提取:
- 拆分
fields参数,区分顶层字段(如total)和嵌套字段(如hits.name) - 顶层字段直接从原始数据中提取,嵌套字段遍历对应数组提取目标属性
内容的提问来源于stack exchange,提问作者Ajm Kir
相关产品推荐
相关产品推荐

