我有一個 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 檔案以提取目標根元素?
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 本身。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/399216.html
