【问题标题】:How to get root elements contains specific character如何获取根元素包含特定字符
【发布时间】:2021-12-31 06:46:55
【问题描述】:

我有一个 json 文件,想提取包含数组中特定字符的所有根元素。

我的json文件结构:

{
"12": [
    "12",
    "200 OK",
    "{\r\n  \"ResponseText\": null,\r\n  \"RegistrationUserID\": {}\r\n}"
],
"19": [
    "23",
    "200 OK",
    "{\r\n  \"ResponseText\": null,\r\n  \"RegistrationUserID\": {\r\n    \"1\": \"2019***091\",\r\n    \"2\": \"2019****67\"\r\n  }\r\n}"
],
"20": [
    "434",
    "200 OK",
    "{\r\n  \"ResponseText\": null,\r\n  \"RegistrationUserID\": {\r\n    \"1\": \"2019****83\"\r\n  }\r\n}"
],
"333": [
    "25",
    "200 OK",
    "{\r\n  \"ResponseText\": null,\r\n  \"RegistrationUserID\": {\r\n    \"1\": \"2019****32\"\r\n  }\r\n}"
],
"3454": [
    "55",
    "200 OK",
    "{\r\n  \"ResponseText\": null,\r\n  \"RegistrationUserID\": {\r\n    \"1\": \"2019****1\"\r\n  }\r\n}"
],
"23": [
    "66",
    "200 OK",
    "{\r\n  \"ResponseText\": null,\r\n  \"RegistrationUserID\": {\r\n    \"1\": \"2019****5\"\r\n  }\r\n}"
],
"23424": [
    "34",
    "200 OK",
    "{\r\n  \"ResponseText\": null,\r\n  \"RegistrationUserID\": {\r\n    \"1\": \"2019****2\"\r\n  }\r\n}"
],

}

我想提取所有包含“***”的根值。

结果应该看起来:

19 20 333 3454 23 23424

如何使用 JQ 解析我的 json 文件以提取目标根元素?

【问题讨论】:

    标签: json bash shell jq


    【解决方案1】:

    @peak 的solution 是所提问题的正确答案。但是,如果您想深入了解包含在顶部数组的第三个元素中的编码 JSON 并仅在其中搜索,请使用 fromjson 内置函数:

    to_entries[]
    | select(any(.value[2] | fromjson | .RegistrationUserID[]; test("\\*\\*\\*")))
    | .key
    
    19
    20
    333
    3454
    23
    23424
    

    Demo

    【讨论】:

    • 就像一个魅力!谢谢!
    【解决方案2】:

    当从 JSON 中删除多余的逗号,并且使用 -r 命令行选项时,过滤器:

    to_entries[]
    | select( any(.value[]; test("\\*\\*\\*") ))
    | .key
    

    产生流:

    19
    20
    333
    3454
    23
    23424
    
    

    您可以轻松地将这些值打包成任何您想要的方式,例如使用 jq 本身。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      相关资源
      最近更新 更多