我有一个带有许多嵌套属性的JSON.大概是这样的:

{
  "user": {
    "name": "Matias",
    "age": 12,
  },
  "role": {
    "it": {
      "developer": true,
      "designer": false
    }
  }
}

诸若此类.我正在try 创建这个json的列表,每个属性都在一行中,其"路径"用点分隔.大概是这样的:

.user.name = "Matias"
.user.age = 12
.role.it.developer = true
.role.it.designer = false

我知道我可以用".."和"to_Entry"递归地遍历对象并将每个 node 转换为键/值,但我不知道如何将它们组合在一起,使输出正好是我想要的.

推荐答案

您可以使用--stream选项来生成路径值数组流.筛选那些存在值的项,join路径(第first项),并加入值(第last项).我使用@json进行编码(字符串两边的引号),因为您没有另外指定.

jq -r --stream 'select(has(1)) | ".\(first | join(".")) = \(last | @json)"'
.user.name = "Matias"
.user.age = 12
.role.it.developer = true
.role.it.designer = false

注意:你没有指定数组项应该发生什么.这将简单地使用它们的索引而不是字段名称.

Json相关问答推荐

如何在PowerShell中扩展JSON中的嵌套数组

通过在织女星简化图上裁剪来显示文本

Jolt-Json转换:通过引用标识符(而不是索引)设置值

在 SQL 存储过程中使用参数 Select 值

在 json 对象中存储多个键:值对

如何在 terraform 输出中打印一组用户信息

jolt 通配符如何用于 RHS?

为什么根据其他工具,来自 aws rds 的 JSON 在 Docker 中格式错误运行?

自定义将 struct 解组为切片映射

如何将任意 json 对象发布到 webapi

如何从 JSON 对象中获取日期

了解 JSON Schema 草稿版本 4 中的additionalProperties关键字

数据包含连续问号时无法理解的 jQuery $.ajax() 行为

使用 jq 如何用其他名称替换键的名称

使用 Retrofit 解析动态密钥 Json 字符串

有没有办法折叠 Postman 中的所有 json 字段

YAML 将 5e-6 加载为字符串而不是数字

Jersey 2.0 相当于 POJOMappingFeature

ASP.NET Web API JSON 输出中没有时间的日期

jq:按属性分组和键