使用jq从多源字段复制值到指定字段的JSON格式化需求
JSON数据规范化处理:提取布尔值到
val字段并处理特殊键e 原始数据源
{ "an": { "e": false }, "at": { "c": { "e": false } }, "b": { "s": true }, "e": { "d": true, "e": true, "f": true, "n": true, "p": true, "r": true, "s": true }, "l": { "f": "info" }, "m": { "b": true }, "ma": { "mo": "pov", "s": true }, "r": { "mo": "pov", "s": true } }
期望输出
{ "an": { "e": false, "val": false }, "at": { "c": { "e": false }, "val": false }, "b": { "s": true, "val": true }, "e": { "d": true, "e": true, "f": true, "n": true, "p": true, "r": true, "s": true }, "ed": { "val": true }, "ee":{ "val": true }, "ef": { "val": true }, "en": { "val": true }, "ep": { "val": true }, "er": { "val": true }, "es": { "val": true }, "l": { "f": "info" }, "m": { "b": true, "val": true }, "ma": { "mo": "pov", "s": true, "val": true }, "r": { "mo": "pov", "s": true, "val": true } }
处理规则
- 指定节点布尔值提取:
- 将
an.e的值复制到an.val - 将
at.c.e的值复制到at.val - 将
b.s的值复制到b.val - 将
m.b的值复制到m.val - 将
ma.s的值复制到ma.val - 将
r.s的值复制到r.val
- 将
- 特殊键
e处理:将e的子键与主键e合并为新键,新键下生成val字段并赋值对应布尔值(例如e.d对应生成ed.val: true) - 无布尔值子字段的节点(如
l)保持原样
内容的提问来源于stack exchange,提问作者André Letterer
相关产品推荐
相关产品推荐

