在深度嵌套的JSON中为特定的键名称选择特定的所有键路径和值

用户名

我有一个非常大的JSON模式,该模式是半结构化的,嵌套的单元结构用键“ ObjectType”标记,以指示一些有意义的信息。

我正在尝试使用jq选择所有这些ObjectType及其值的路径。

json的示例部分是:

{
    "ObjectType": "ClassZ",
    "LastModifiedBy": "janeroe",
    "Name": "Anonymous",
    "ArrayProps": [],
    "Logistics": [
      {
        "ObjectType": "ClassA",
        "Source": "Vendor",
        "UUID": "x868-dhibye9-7678-12",
        "EffectiveDate": "2020-01-01",
        "Active": true,
        "Preferred": 0
      }
    ],
    "IsVirtual": true,
    "Convention": 3,
    "CruiseParams": [
      {
        "ObjectType": "ClassB",
        "Destinaton": "Atlantis",
        "Value": "3"
      }
    ],
    "InvolvedParties": [],
    "PartyEvents": [
      {
        "ObjectType": "ClassC",
        "CreatedDate": "2020-01-01",
        "CreatedBy": "johndoe"
      }
    ],
    "FunFactors": [
      {
        "ObjectType": "ClassD",
        "Level": 1
      }
    ]
  }

尝试输出类似或接近的内容:

"ObjectType":                "ClassZ"
"Logistics/0/ObjectType":    "ClassA"
"CruiseParams/0/ObjectType": "ClassB"
"PartyEvents/0/ObjectType":  "ClassC"
"FunFactors/0/ObjectType":   "ClassD"
钢铁司机

基于如何使用jq获取找到的值的索引路径,这是我能想到的最好的方法。

$ jq -rc 'paths as $p | select($p[-1] == "ObjectType") | "\($p|@csv): \"\(getpath($p))\""' sample.json
"ObjectType": "ClassZ"
"Logistics",0,"ObjectType": "ClassA"
"CruiseParams",0,"ObjectType": "ClassB"
"PartyEvents",0,"ObjectType": "ClassC"
"FunFactors",0,"ObjectType": "ClassD"

引号和定界符与您要求的不完全相同-使用map(tostring)| join(“/“)注释中的建议,它变成了

$ jq -rc 'paths as $p | select($p[-1] == "ObjectType") | "\"\($p|map(tostring)|join("/"))\": \"\(getpath($p))\""' sample.json
"ObjectType": "ClassZ"
"Logistics/0/ObjectType": "ClassA"
"CruiseParams/0/ObjectType": "ClassB"
"PartyEvents/0/ObjectType": "ClassC"
"FunFactors/0/ObjectType": "ClassD"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在深度嵌套的JSON中查找具有特定名称的所有键

来自分类Dev

如何从java中的json字符串(带有子项)中删除所有键及其特定键名的值

来自分类Dev

使用JSON和JQ中的特定键获取具有所有值的数组

来自分类Dev

以任意深度提取嵌套json数据中的所有键

来自分类Dev

覆盖as_json以在深度嵌套模型中包含特定值

来自分类Dev

Angular JS无法解析键名称中带有(@)的嵌套JSON键

来自分类Dev

PHP-从深度未知的多维数组中获取具有特定数组键的所有值

来自分类Dev

如何从JSON对象数组中删除具有特定键/值对的所有JSON对象?

来自分类Dev

JavaScript:更改给定路径的深度嵌套对象的所有值

来自分类Dev

从对象中获取具有特定值的所有键

来自分类Dev

用javascript中的值返回所有深度对象的嵌套键的好方法

来自分类Dev

JavaScript | 遍历JSON对象并获取特定键的所有值

来自分类Dev

如果数组可以有任何大小和嵌套,如何从PHP数组中的特定键获取所有数据?

来自分类Dev

从Swift中的Dictionary获取特定键的所有值

来自分类Dev

如何在pymongo中查找特定键的所有值?

来自分类Dev

如何从字典中的特定键中提取所有值?

来自分类Dev

在嵌套字典中查找特定键的值

来自分类Dev

在嵌套对象中搜索特定键的值

来自分类Dev

python删除json中的所有特定键

来自分类Dev

为递归/嵌套对象数组中的所有路径创建一个键映射

来自分类Dev

从mongoDB获取特定键的所有值

来自分类Dev

打印python嵌套字典的所有值的完整键路径

来自分类Dev

如何使用 Python 在深度嵌套的结构中收集特定值

来自分类Dev

如何在 ReactJS 的嵌套状态中使用所有特定键更改值

来自分类Dev

访问R中的嵌套列表中具有特定名称的所有列

来自分类Dev

如何在列表和列中的特定键中获取所有唯一字典值?

来自分类Dev

将所有值放在深度嵌套的字典中

来自分类Dev

选择以特定字符结尾的所有值

来自分类Dev

如何计算特定深度的json中的键数

Related 相关文章

  1. 1

    在深度嵌套的JSON中查找具有特定名称的所有键

  2. 2

    如何从java中的json字符串(带有子项)中删除所有键及其特定键名的值

  3. 3

    使用JSON和JQ中的特定键获取具有所有值的数组

  4. 4

    以任意深度提取嵌套json数据中的所有键

  5. 5

    覆盖as_json以在深度嵌套模型中包含特定值

  6. 6

    Angular JS无法解析键名称中带有(@)的嵌套JSON键

  7. 7

    PHP-从深度未知的多维数组中获取具有特定数组键的所有值

  8. 8

    如何从JSON对象数组中删除具有特定键/值对的所有JSON对象?

  9. 9

    JavaScript:更改给定路径的深度嵌套对象的所有值

  10. 10

    从对象中获取具有特定值的所有键

  11. 11

    用javascript中的值返回所有深度对象的嵌套键的好方法

  12. 12

    JavaScript | 遍历JSON对象并获取特定键的所有值

  13. 13

    如果数组可以有任何大小和嵌套,如何从PHP数组中的特定键获取所有数据?

  14. 14

    从Swift中的Dictionary获取特定键的所有值

  15. 15

    如何在pymongo中查找特定键的所有值?

  16. 16

    如何从字典中的特定键中提取所有值?

  17. 17

    在嵌套字典中查找特定键的值

  18. 18

    在嵌套对象中搜索特定键的值

  19. 19

    python删除json中的所有特定键

  20. 20

    为递归/嵌套对象数组中的所有路径创建一个键映射

  21. 21

    从mongoDB获取特定键的所有值

  22. 22

    打印python嵌套字典的所有值的完整键路径

  23. 23

    如何使用 Python 在深度嵌套的结构中收集特定值

  24. 24

    如何在 ReactJS 的嵌套状态中使用所有特定键更改值

  25. 25

    访问R中的嵌套列表中具有特定名称的所有列

  26. 26

    如何在列表和列中的特定键中获取所有唯一字典值?

  27. 27

    将所有值放在深度嵌套的字典中

  28. 28

    选择以特定字符结尾的所有值

  29. 29

    如何计算特定深度的json中的键数

热门标签

归档