[英]JSON file parsing using jq
我有一個帶有這樣的detailes的JSON文件(不是完整文件):
{"property": [
{
{
"name": "test1",
"value": "{\"test_type\":\"jsystem\",\"order\":1,\"test_id\":\"test_01\",\"physical_setup_id\":\"prd_01\",\"timeout\":\"20\"}",
"own": true
},
{
"name": "test2",
"value": "{\"test_type\":\"jsystem\",\"order\":2,\"test_id\":\"test_02\",\"physical_setup_id\":\"prd_02\",\"timeout\":\"30\"}",
"own": true
},
{
"name": "pass",
"value": "{\"test_type\":\"jsystem\",\"order\":3,\"test_id\":\"test_03\",\"physical_setup_id\":\"prd_01\",\"timeout\":\"15\"}",
"own": true
}
]
}
我嘗試提取包含“ name test%NUMBER%”的所有字段,我嘗試這樣做: cat build.json | jq '.property | .[] | select(.name=="test1")'
cat build.json | jq '.property | .[] | select(.name=="test1")'
cat build.json | jq '.property | .[] | select(.name=="test1")'
-正常,但是我想向.name == test添加數字參數。 像這樣:
cat build.json | jq '.property | .[] | select(.name=="test'[0-9]'")'
秒鍾,我需要解析“值”參數下的每個數據。 像這樣:
test1:
test_type=jsystem
order=1
test_id=test_01
]
}
在jq 1.5中,增加了對正則表達式的支持
因此,假設property
是測試對象的數組(您的示例已損壞且無效),則可以執行以下操作以選擇名稱遵循該模式的對象:
.property | map(select(.name | test("test[0-9]")))
然后,對於每個這些對象,該value
似乎都是json字符串。 您必須先解析出這些內容,然后才能從中獲取任何收益。
.property | map(
select(.name | test("test[0-9]"))
| .value |= fromjson
| { name } + .value
)
這將為您提供一個數組:
[
{
"name": "test1",
"test_type": "jsystem",
"order": 1,
"test_id": "test_01",
"physical_setup_id": "prd_01",
"timeout": "20"
},
{
"name": "test2",
"test_type": "jsystem",
"order": 2,
"test_id": "test_02",
"physical_setup_id": "prd_02",
"timeout": "30"
}
]
將其格式化為您喜歡的格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.