簡體   English   中英

轉換 JSON 時使用 jq 向現有 JSON 對象添加新元素

[英]Add new element to existing JSON Object with jq when transforming the JSON

我正在嘗試將我的 JSON 轉換為特定格式,在此期間我有一個用例可以將位於 JSON 不同級別的字段添加到對象中。

源 JSON(簡體)

{
  "metadata": {
    "ItemName": "Arun 101",
    "fullflow": "true",
    "name": "arunkumar",
    "code": "12345"
  },
  "systemName": "Super Jack",
  "priority": "Rush",
  "materialFiles": [
    {
      "type": "packaging_metadata"
    }
  ]
}

詢問:

{metadata : .metadata+= {"operation":.materialFiles[0].type}, systemName }

預期輸出:

{
  "metadata": {
    "ItemName": "Arun 101",
    "fullflow": "true",
    "name": "arunkumar",
    "code": "12345",
    "operation": "packaging_metadata"
  },
  "systemName": "Super Jack",
  "priority": "Rush"
}

https://jqplay.org/s/rEldNvbbANe

使用括號並且不要更新:

{metadata: (.metadata + {"operation":.materialFiles[0].type}), systemName, priority}
{
  "metadata": {
    "ItemName": "Arun 101",
    "fullflow": "true",
    "name": "arunkumar",
    "code": "12345",
    "operation": "packaging_metadata"
  },
  "systemName": "Super Jack",
  "priority": "Rush"
}

演示

或者只是改變.metadatadel ete .materialFiles

.metadata+= {"operation":.materialFiles[0].type} | del(.materialFiles)
{
  "metadata": {
    "ItemName": "Arun 101",
    "fullflow": "true",
    "name": "arunkumar",
    "code": "12345",
    "operation": "packaging_metadata"
  },
  "systemName": "Super Jack",
  "priority": "Rush"
}

演示

暫無
暫無

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

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