Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays jq-删除JSON文件中所有数组中的重复项_Arrays_Json_Search_Jq - Fatal编程技术网

Arrays jq-删除JSON文件中所有数组中的重复项

Arrays jq-删除JSON文件中所有数组中的重复项,arrays,json,search,jq,Arrays,Json,Search,Jq,我有以下JSON文件 [ { "name": "first", "Arrays": { "dddd0001": [ "A", "A", "B", "B&quo

我有以下JSON文件

[
    {
        "name": "first",
        "Arrays": {
            "dddd0001": [
                "A",
                "A",
                "B",
                "B",
                "C",
                "C",
                "C",
                "C",
                "D",
                "E",
                "F"
            ]
        }
    },
    {
        "name": "second",
        "Arrays": {
            "dddd0002": [
                "AA",
                "AA",
                "BA",
                "BB",
                "CC",
                "CC",
                "CC",
                "CC",
                "DD",
                "DD",
                "FF"
            ]
        }
    },
    {
        "name": "third",
        "Arrays": {
            "dddd0003": [
                "1",
                "1",
                "2",
                "3",
                "3",
                "4",
                "4",
                "4",
                "0",
                "0",
                "0"
            ]
        }
    }
]
我需要删除JSON文件中每个数组中的重复项。所以结果应该如下所示

[
    {
        "name": "first",
        "Arrays": {
            "dddd0001": [
                "A",
                "B",
                "C",
                "D",
                "E",
                "F"
            ]
        }
    },
    {
        "name": "second",
        "Arrays": {
            "dddd0002": [
                "AA",
                "BA",
                "BB",
                "CC",
                "DD",
                "FF"
            ]
        }
    },
    {
        "name": "third",
        "Arrays": {
            "dddd0003": [
                "1",
                "2",
                "3",
                "4",
                "0"
            ]
        }
    }
]
数组键名称事先未知。
数组
对象中可能有多个数组。 我试图通过使用
unique\u,但它需要密钥名

这个算法——搜索Arrays对象中的每个数组,对于每个这样的数组应用
unique
函数,将结果重新分配回数组——应该很容易实现,但我被卡住了

谢谢。

var jsonArr=[
{
“名称”:“第一”,
“数组”:{
“DD0001”:[
“A”,
“A”,
“B”,
“B”,
“C”,
“C”,
“C”,
“C”,
“D”,
“E”,
“F”
]
}
},
{
“名称”:“第二个”,
“数组”:{
“DD0002”:[
“AA”,
“AA”,
“BA”,
“BB”,
“抄送”,
“抄送”,
“抄送”,
“抄送”,
“DD”,
“DD”,
“FF”
]
}
},
{
“姓名”:“第三名”,
“数组”:{
“DD0003”:[
"1",
"1",
"2",
"3",
"3",
"4",
"4",
"4",
"0",
"0",
"0"
]
}
}
]
for(var i=0;iarrtmp2.indexOf(v)==p);
log(jsonArr[i])
}
var jsonArr=[
{
“名称”:“第一”,
“数组”:{
“DD0001”:[
“A”,
“A”,
“B”,
“B”,
“C”,
“C”,
“C”,
“C”,
“D”,
“E”,
“F”
]
}
},
{
“名称”:“第二个”,
“数组”:{
“DD0002”:[
“AA”,
“AA”,
“BA”,
“BB”,
“抄送”,
“抄送”,
“抄送”,
“抄送”,
“DD”,
“DD”,
“FF”
]
}
},
{
“姓名”:“第三名”,
“数组”:{
“DD0003”:[
"1",
"1",
"2",
"3",
"3",
"4",
"4",
"4",
"0",
"0",
"0"
]
}
}
]
for(var i=0;iarrtmp2.indexOf(v)==p);
log(jsonArr[i])

}
您可以使用
unique
|=

$ jq '.[].Arrays[] |= unique' file.json
[
  {
    "name": "first",
    "Arrays": {
      "dddd0001": [
        "A",
        "B",
        "C",
        "D",
        "E",
        "F"
      ]
    }
  },
  {
    "name": "second",
    "Arrays": {
      "dddd0002": [
        "AA",
        "BA",
        "BB",
        "CC",
        "DD",
        "FF"
      ]
    }
  },
  {
    "name": "third",
    "Arrays": {
      "dddd0003": [
        "0",
        "1",
        "2",
        "3",
        "4"
      ]
    }
  }
]
$
唯一的“问题”是
unique
对数组的元素进行排序,因此,例如
“dddd0003”
数组的内容与预期结果的顺序不同。我不知道这对你来说是否是个问题

如果
“array”
属性也可以包含“non-array”值,则可以格外小心地“过滤”那些“non-array”值,以便
unique
不会抱怨

select(type==“array”)
可以使用:(输出省略):

数组

$ jq '(.[].Arrays[] | arrays) |= unique' file.json
...

最后两个解决方案更好地反映了您的算法。

您可以使用
unique
=“code>:

$ jq '.[].Arrays[] |= unique' file.json
[
  {
    "name": "first",
    "Arrays": {
      "dddd0001": [
        "A",
        "B",
        "C",
        "D",
        "E",
        "F"
      ]
    }
  },
  {
    "name": "second",
    "Arrays": {
      "dddd0002": [
        "AA",
        "BA",
        "BB",
        "CC",
        "DD",
        "FF"
      ]
    }
  },
  {
    "name": "third",
    "Arrays": {
      "dddd0003": [
        "0",
        "1",
        "2",
        "3",
        "4"
      ]
    }
  }
]
$
walk( if type == "array" then unique else . end)
唯一的“问题”是
unique
对数组的元素进行排序,因此,例如
“dddd0003”
数组的内容与预期结果的顺序不同。我不知道这对你来说是否是个问题

如果
“array”
属性也可以包含“non-array”值,则可以格外小心地“过滤”那些“non-array”值,以便
unique
不会抱怨

select(type==“array”)
可以使用:(输出省略):

数组

$ jq '(.[].Arrays[] | arrays) |= unique' file.json
...
最后两个解决方案更好地反映了您的算法

walk( if type == "array" then unique else . end)
如果应遵守原始订单,则可以轻松使用在中定义的“def uniques”


如果应该遵守原始顺序,那么您可以轻松使用

中定义的“def uniques”,谢谢,但正如描述中所述,我正在寻找jq.oops的解决方案。我的错误。抱歉,谢谢,但正如描述中所说,我正在寻找一个使用jq.oops的解决方案。我的错误。对不起,马可,非常感谢你。它确实解决了这个问题,只要数组的键名在本例中为“arrays”是已知的。@Invisible999是的,我必须承认,从这个意义上讲,它不是一个非常“通用”的解决方案。很高兴我帮了你一点忙:)马可,非常感谢。它确实解决了这个问题,只要数组的键名在本例中为“arrays”是已知的。@Invisible999是的,我必须承认,从这个意义上讲,它不是一个非常“通用”的解决方案。很高兴我帮了你一点忙:)谢谢你提供的解决方案-工作完美。我是否正确理解了
uniqie
不仅对数组内容进行排序,而且还根据数组键名对数组进行排序?
unique
本身只对作为其输入的数组进行排序。感谢您提供解决方案-效果非常好。我是否正确地理解了
uniqie
不仅对数组内容进行排序,而且还基于数组键名对数组进行排序?
unique
本身仅对