簡體   English   中英

jq:來自嵌套 JSON 的 Map

[英]jq: Map from nested JSON

我有以下 JSON:

{
  "A": {
    "type": "string",
    "value": "value_A"
  },
  "B": {
    "type": "string",
    "value": "value_B"
  }
}

...並嘗試使用 JQ 來產生以下結果:

所需 Output

{
  "A": "value_A",
  "B": "value_B"
}

...其中鍵采用node.value的直接值。


我目前的嘗試:

.[] | {value}

...返回以下內容:

{
  "value": "value_A"
}
{
  "value": "value_B"
}

如何使用 JQ 生產所需的 JSON?

你不需要with_entries

map_values(.value)

在線演示

with_entries幫助:

with_entries(.value |= .value)

to_entries | map(.value |=.value) | from_entries to_entries | map(.value |=.value) | from_entries

to_entries將形式為{a:b}的 object 轉換為形式為[{key:a, value:b}]的數組,因此在您的示例中:

{
  "key": "A",
  "value": {
    "type": "string",
    "value": "value_A"
  }
}

.value |=.value然后將.value.value的內容分配給.value ,留下:

{
  "key": "A",
  "value": "value_A"
}

然后由 from_entries 再次轉換為from_entries (從上面重復: with_entries(f)等效於from_entries|map(f)|from_entries

你的嘗試

.[] | {value}

只是錯過了更新分配。

這將按預期工作:

.[] |= .value
{
  "A": "value_A",
  "B": "value_B"
}

演示

使用 function map_values()

map_values(.value)

它運行作為參數傳遞給輸入 object 的每個值的過濾器,收集結果並將它們與輸入 object 的鍵相關聯,並返回 object。

上網查一下。

暫無
暫無

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

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