json - 使用 jq 对数组中的字符串进行排序

标签 json jq

我这里有两个 json 文件,它们都有相同的内容,只是顺序不同,并且要通过 diff 检查它们是否相等。

我已经使用 jq -S 对键进行了排序,但现在我必须确保字符串在数组中同等排序。

不幸的是,我现在失败了,我不太清楚如何达到正确的级别以及如何对内容进行排序。

这是 json 的示例结构,数组“allowed-test-mapper-data”应按降序排序

{
    "accessCodeLife": 60,
    "accessCodeLifespan": 1800,
    "accessCodeType": 300,
    "components": {
        "test.data.app": [
        {
        "config": {
            "allow-default-test-scopes": [
                "true"
            ]
        },
        "name": "Allowed Test Client",
        "id": "allowed-testdata",
        "subComponents": {},
        "subType": "testdata"
        },
        {
        "config": {
            "allowed-test-mapper-data": [
                "alfred",
                "usa",
                "canada",
                "somedata",
                "alcohol",
                "brother"
                ]   
            }
        }
        ]
    }
}

有人可以帮我吗? 那就太好了:)

最佳答案

使用更新赋值|=运算符来更改结构的一部分:

jq  '.components."test.data.app"[].config."allowed-test-mapper-data"
         |= if . then sort else empty end' file.json

关于json - 使用 jq 对数组中的字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69110148/

相关文章:

python - 在Python中的for循环中编写Json

python - 将 json 数组中的键追加(映射)到另一个子数组

json - 用JQ解析json : Where are the comma?

stream - 添加非数组格式的数字?或者如何过滤到数组以便我可以总结

php json数组问题

python - django jsonfield 保存到数据库

javascript - 循环访问从 API 接收到的 json

iphone - ASIHTTPRequest 返回 HTML 而不是 JSON

json - Bash 脚本在 Json 中动态添加新的键值对

json - 如果任何嵌套值与设置值匹配,则打印键