json - 剥离 JSON 元素并向其添加新元素
问题描述
我正在尝试采用现有的 JSON 元素并创建一个具有附加值的新元素。
我知道我可以使用多种其他工具来做到这一点,但我想知道这是否可以单独使用 jq
输入json文件:
{
"entries": [
{
"uuid": "1a03",
"enabled": true,
"autoname": true,
"name": "LBC",
"number": 0,
"epgauto": true,
"epggrab": [],
"dvr_pre_time": 0,
"dvr_pst_time": 0,
"epg_running": -1,
"services": [
"ea8"
],
"tags": [
"0a7"
],
"bouquet": ""
},
{
"uuid": "4a05",
"enabled": true,
"autoname": true,
"name": "Radio X",
"number": 0,
"epgauto": true,
"epggrab": [],
"dvr_pre_time": 0,
"dvr_pst_time": 0,
"epg_running": -1,
"services": [
"9d36"
],
"tags": [
"08fa7"
],
"bouquet": ""
},...]
}
然后,我将其过滤为我想要的对象,然后返回单个对象。
我没有成功尝试使用 map "+" 运算符添加值我认为我的语法可能是错误的
我正在使用它来过滤我想要的对象
.entries[] | select(.uuid=="4a05")
如果我最终过滤,我想创建以下输出uuid=4a05
[{"tags":["08fa7","MYNEWVALUE"],"number":mynew##,"uuid":"4a05"}]
解决方案
这是完成任务的一种方法 - 首先使用感兴趣的字段创建一个对象,然后更新.tags
:
.entries[]
| select(.uuid=="4a05")
| {tags, uuid, number: "mynew##"}
| .tags += ["MYNEWVALUE"]
推荐阅读
- node.js - 为什么我们在 webpack 中设置 node.fs: 'empty'?
- java - Java 中 Ed25519 密钥对的 PEM 文件格式
- flutter - 每次我打开 Flutter Drawer 时都会重建它
- dfa - 可构建的 DFA 数量
- sorting - Primefaces 8 上的 TableState.getMultiSortMeta()
- javascript - 错误:测试邮递员时出了点问题
- c++ - MariaDB:SQL 错误您的 SQL 语法有错误,而不是
- python - AttributeError:模块“transformers.modeling_bert”没有属性“gelu”
- c++ - 使用 C++ 时,在 Vim 中括号内的大括号上不需要突出显示
- python - 使用电源查询或 python 将多个表合并到具有相似标题的单个工作表中