我有以下 json 資料。需要幫助決議它。
{
"e4624072-a9a2-4181-9649-550b9cfeb7cd||220000d7f738801": {
"List": [
{
"Insts": [
{
"DefId": "A1",
"data1": 1073741824,
"data2": 0,
"data3": 0
}
]
}
],
"name": [
"AMIT||220000d7f728801"
],
"id": "e4624072-a9a2-4181-9649-550b9cfeb7cd||220000d7f738801",
"endTime": 96285337200000
},
"0b1141b2-c2de-47c9-aa0c-2742f92b63f2||220000d7f738801": {
"List": [
{
"Insts": [
{
"DefId": "B1",
"data1": 5368709120,
"data2": 5368709120,
"data3": 5368709120
}
]
},
{
"edigest": "MV6shIv5NE5vWkc0cx6Q/JTwid4=",
"csDefRef": "BoostYES_B1"
},
{
"edigest": "MV6shIv5NE5vWkc0cx6Q/JTwid4=",
"csDefRef": "BoostOff_B1"
}
],
"name": [
"AMIT||220000d7f728801"
],
"id": "0b1141b2-c2de-47c9-aa0c-2742f92b63f2||220000d7f738801",
"lifeCycle": 0
},
"23e529f9-b2f3-4730-9b28-4ee05ca678b6||220000d7f738801": {
"List": [
{
"Insts": [
{
"DefId": "A2",
"data1": 1073741824,
"data2": 0,
"data3": 0,
"lastUpdateTime": 1619541451476,
"origInitialVal": 1073741824
}
]
}
],
"name": [
"AMIT||220000d7f728802"
],
"id": "23e529f9-b2f3-4730-9b28-4ee05ca678b6||220000d7f738801",
"endTime": 96285337200000,
"lifeCycle": 0
},
"66b2229b-2c16-4d54-b2a8-fcc1baeaf51c||220000d7f738801": {
"List": [
{
"Insts": [
{
"DefId": "B2",
"data1": 10737418240,
"data2": 10737418240,
"data3": 10737418240,
"lastUpdateTime": 1637766239807,
"origInitialVal": 10737418240
}
]
},
{
"edigest": "MV6shIv5NE5vWkc0cx6Q/JTwid4=",
"csDefRef": "RMN_B2"
}
],
"name": [
"AMIT||220000d7f728801"
],
"startTime": 1637766000000,
"id": "66b2229b-2c16-4d54-b2a8-fcc1baeaf51c||220000d7f738801",
"endTime": 1637852400000,
"lifeCycle": 0
},
"b896eb1b-d6b0-432b-8925-af17431c0f3e||220000d7f738801": {
"List": [
{
"Insts": [
{
"DefId": "B3",
"data1": 2147483648,
"data2": 2147483648,
"data3": 2147483648,
"lastUpdateTime": 1635692405780
}
]
},
{
"edigest": "MV6shIv5NE5vWkc0cx6Q/JTwid4=",
"csDefRef": "BoostYES_B3"
},
{
"edigest": "MV6shIv5NE5vWkc0cx6Q/JTwid4=",
"csDefRef": "BoostOffCS_B3"
}
],
"name": [
"AMIT||220000d7f728801"
],
"id": "b896eb1b-d6b0-432b-8925-af17431c0f3e||220000d7f738801",
"lifeCycle": 0
}
}
所需的輸出如下:
AMIT||220000d7f728801,A1,1073741824,0,0
AMIT||220000d7f728801,B1,5368709120,5368709120,5368709120
AMIT||220000d7f728801,A2,1073741824,0,0
AMIT||220000d7f728801,B2,10737418240,10737418240,10737418240
AMIT||220000d7f728801,B3,2147483648,2147483648,2147483648
我試圖在 jq 下面執行,但它給出了標題中提到的。這可能是因為 DefId 在所有地方都不存在。資料 1、資料 2 和資料 3 類似。
jq -r '.[] | ."name", ."List"[]."Insts"."DefId"'
為了獲得正確的輸出,正確的 jq 命令是什么?
uj5u.com熱心網友回復:
不幸的是,您對資料結構的約束(保證欄位的存在、陣列的長度等)只字未提。因此,只需根據您提供的內容,這會將內容提取為您想要的輸出格式:
jq -r '.[] | [.name[0] , (.List[0].Insts[0] | .DefId, .data1, .data2, .data3)] | join(",")'
AMIT||220000d7f728801,A1,1073741824,0,0
AMIT||220000d7f728801,B1,5368709120,5368709120,5368709120
AMIT||220000d7f728801,A2,1073741824,0,0
AMIT||220000d7f728801,B2,10737418240,10737418240,10737418240
AMIT||220000d7f728801,B3,2147483648,2147483648,2147483648
演示
uj5u.com熱心網友回復:
您可以List.Insts使用
.List[].Insts | select( . != null ) 對于回傳值 to_entries[]
雖然提取name鍵的值很簡單。
然后通過使用包裝方括號將形成的陣列的組件連接起來,例如
jq -r 'to_entries[] | .value | [ .name[] , (.List[].Insts | select( . != null ) | .[] | .DefId, "\(.data1)", "\(.data2)", "\(.data3)" ) ] | join(",")'
Demo
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/385792.html
