我有一个 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 评论