剥离JSON元素并向其添加新元素
我正在尝试获取一个现有的JSON元素,并创建一个新的JSON元素,其中包含一个键的附加值 我知道我可以使用许多其他工具来实现这一点,但我想知道,仅仅使用jq是否可以实现这一点 输入json文件:剥离JSON元素并向其添加新元素,json,shell,jq,Json,Shell,Jq,我正在尝试获取一个现有的JSON元素,并创建一个新的JSON元素,其中包含一个键的附加值 我知道我可以使用许多其他工具来实现这一点,但我想知道,仅仅使用jq是否可以实现这一点 输入json文件: { "entries": [ { "uuid": "1a03", "enabled": true, "autoname": true, "name": "LBC", "number": 0, "epgauto": tru
{
"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],编号:mynew,uuid:4a05}]完成任务的一种方法是:首先创建一个包含感兴趣字段的对象,然后更新。tags:
太神了我可以做些什么来检查我添加的值是否已经存在?当然可以。您可能希望通过jq教程来学习,并熟悉在线手册。只需点击页面顶部的链接即可
.entries[]
| select(.uuid=="4a05")
| {tags, uuid, number: "mynew##"}
| .tags += ["MYNEWVALUE"]