拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何获取根元素包含特定字符

如何获取根元素包含特定字符

白鹭 - 2022-01-26 1948 0 0

我有一个 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}"
],

}

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

结果应该是:

如何使用 JQ 决议我的 json 档案以提取目标根元素?

uj5u.com热心网友回复:

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

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

演示

uj5u.com热心网友回复:

当从 JSON 中洗掉无关的逗号时,并使用 -r 命令列选项时,过滤器:

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

产生流:

19
20
333
3454
23
23424

您可以以任何方式轻松打包这些值,例如使用 jq 本身。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *