如何使用JQ检测和上报重复的Object Key?例如,下面的JSON在.a上有重复的键.

{
  "a":{
    "b": 1
  },
  "a":{
    "c": 1
  }
}

我认为使用--stream是必需的,但我不能完全正确地使用它.

编辑:不能假定DUP只能作为顶级密钥存在.DUP可能存在于任何级别.

推荐答案

如果您不介意运行两次JQ,您可以使用--stream标志在"外部"(在折叠副本之前)生成一次流,使用tostream过滤器"在内部"(在折叠副本之后)生成一次流,然后使用diff它们的结果(使用jq -c进一步将输出数量减少到diff):

diff -qs <(jq -c --stream . file.json) <(jq -c tostream file.json)

Json相关问答推荐

使用WSO2 JsonTransform Mediator对空值执行JsonExceptionUndeletedOperationException

用于参考的Jolt变换

Powershell ConvertFrom-Json 意外地从包含字符串的单个项目数组生成字符串而不是对象数组

Jolt 变换以展平 json 字符串数组

JOLT分裂和数组数据

将boost::beast::multibuffer转换为std::istream

如何使用 JOLT 将带有列表的 JSON 项目取消列出为多个项目?

jq - 仅在键值对存在的地方打印值

JOLT - 如果对象内部存在键,则将对象移动到数组

嵌套 JSON 到 CSV(多级)

如果值不存在,则将值插入 JSON 数组

将 json 文件转换为 json 对象会打乱对象的顺序

缺少所需的请求正文内容:org.springframework.web.method.HandlerMethod$HandlerMethodParameter

将 CoffeeScript 项目转换为 JavaScript(不缩小)?

JSON.parse 返回字符串而不是对象

如何在spark 上将json字符串转换为数据帧

Jersey 2.0 相当于 POJOMappingFeature

在 .NET 中缩小缩进的 JSON 字符串

Volley JsonObjectRequest Post 参数不再起作用

JSON.stringify 向我的 Json 对象添加额外的 \ 和 "" 的问题