删除JSON文件中的重复项

t30tvxxf  于 2023-01-03  发布在  其他
关注(0)|答案(2)|浏览(143)

我正在尝试重新编辑json文件,以便仅打印具有任何标记为"更改"的属性的子组:错。
Json如下:

{"group":{
    "subgroup1":{
        "attributes":[
        {
            "change":false,
            "name":"Name"},
            {
            "change":false,
            "name":"SecondName"},
            ],
        "id":1,
        "name":"MasterTest"},
    "subgroup2":{
        "attributes":[
            {
            "change":true,
            "name":"Name"
            },
            {
            "change":false,
            "name":"Newname"
            }
            ],
        "id":2,
        "name":"MasterSet"},
}}

我是想用命令:
第一个月
产生需要的输出,但有重复。有人能帮忙吗?或者我应该使用不同的命令来达到这个结果?

f87krz0w

f87krz0w1#

.attributes[]对属性进行迭代,每个迭代步骤都产生自己的结果。使用any过滤器将多个值聚合为一个值,在本例中为表示"至少一个"的布尔值:

.group[] | select(any(.attributes[]; .change==false))
{
  "attributes": [
    {
      "change": false,
      "name": "Name"
    },
    {
      "change": false,
      "name": "SecondName"
    }
  ],
  "id": 1,
  "name": "MasterTest"
}
{
  "attributes": [
    {
      "change": true,
      "name": "Name"
    },
    {
      "change": false,
      "name": "Newname"
    }
  ],
  "id": 2,
  "name": "MasterSet"
}

Demo

nafvub8i

nafvub8i2#

在我看来,重复不是重复,而是由嵌套子组引起的条件,这会给人一种重复的感觉。您应该查看是否有一个开关,以便在上层满足条件时跳过处理子组,从而避免感觉到的重复。

相关问题