簡體   English   中英

使用jq解析JSON文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM