如何使用JOLT将子节点indicator的值设置为父级店铺节点的值
实现方法:提取店铺的indicator值替换原节点
这事儿其实挺 straightforward 的,核心逻辑就是遍历stores下的每个店铺条目,把每个店铺对应的对象直接替换成它内部的indicator数值就行。我给你几个常用编程语言的实现方案,你可以根据自己的场景选:
Python 实现
Python里用字典推导式就能快速完成转换,代码简洁高效:
import json # 原始输入的JSON字符串 input_json = '''{ "stores": { "1100": { "metric1": "27", "metric2": "3013775", "indicator": 8.96 }, "1200": { "metric1": "2", "metric2": "354418", "indicator": 5.64 } } }''' # 解析JSON为Python字典 data = json.loads(input_json) # 核心转换:遍历每个店铺,保留ID,替换为indicator值 data['stores'] = {store_id: details['indicator'] for store_id, details in data['stores'].items()} # 输出格式化后的结果 print(json.dumps(data, indent=2))
运行后就能得到你想要的输出格式。
JavaScript 实现
不管是Node.js环境还是浏览器端,都可以用Object.entries和Object.fromEntries组合完成转换:
// 原始输入数据(如果是JSON字符串,先通过JSON.parse()解析) const inputData = { "stores": { "1100": { "metric1": "27", "metric2": "3013775", "indicator": 8.96 }, "1200": { "metric1": "2", "metric2": "354418", "indicator": 5.64 } } }; // 核心转换:把店铺对象转成键值对数组,替换值后再转回对象 const transformedData = { stores: Object.fromEntries( Object.entries(inputData.stores).map(([storeId, details]) => [storeId, details.indicator]) ) }; // 打印格式化后的结果 console.log(JSON.stringify(transformedData, null, 2));
通用思路(其他语言)
如果是Java、Go这类静态语言,思路也是一致的:
- 先解析原始JSON为对应的数据结构(比如Java的Map,Go的map)
- 遍历
stores下的所有键值对 - 创建一个新的映射结构,将每个店铺ID对应的值设置为原对象中的
indicator字段 - 最后将新结构序列化为JSON输出
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

