簡體   English   中英

使用jq將地圖列表轉換為數組

[英]Using jq to convert list of map into an array

我正在努力從aws dynamodb掃描命令獲取格式化輸出。 dynamodb表中的一項如下所示:

{
   "labels": {
    "Category": [
      "Data",
      "EMR"
    ],
   "Environment": "NonProd",
   "Severity": "Critical"
   },
  "subscriber_id": "blah@blah.com",
  "subscriber_type": "email"
}

當我運行查詢時:

aws dynamodb scan --table-name dummy_table --region region_name -- 
profile default --query "Items[?subscriber_id.S == 
'blah@blah.com'].labels.M[]"

我得到的輸出如下:

[
{
    "Environment": {
        "S": "NonProd"
    },
    "Severity": {
        "S": "Critical"
    },
       "Category": {
            "L": [
                {
                   "S": "Data"
                },
               {
                    "S": "EMR"
               }
            ]
       }
    }
]

所需的輸出是:

    {
        "Category": [
        "Data",
        "EMR"
        ],
       "Environment": "NonProd",
       "Severity": "Critical"
    }

為了獲得所需的輸出,我嘗試使用jq進行操作。

更新的查詢:

    aws dynamodb scan --table-name dummy_table --region 
 region_name -- 
   profile default --query "Items[?subscriber_id.S == 
   'blah@blah.com'].labels.M[]" |
   jq -r '.[] 
     | to_entries[] 
     | [{key:.key, value:.value[]}] 
     | from_entries' | jq -s add

輸出為:

{
  "Environment": "NonProd",
  "Severity": "Critical",
  "Category": [
    {
      "S": "Data"
    },
    {
      "S": "EMR"
    }
  ]
}

如您所見,它已經關閉,但是沒有處理類別列表。 感謝獲得所需輸出的任何幫助。

謝謝

您可以使用以下內容:

.[] | { Environment: .Environment.S, Severity: .Severity.S, Category: (.Category.L | map(.S)) }

輸出:

{
  "Environment": "NonProd",
  "Severity": "Critical",
  "Category": [
    "Data",
    "EMR"
  ]
}

在這里嘗試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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