簡體   English   中英

jq: 加入字符串數組是否為空

[英]jq: join string array whether it is empty or not

我有一個 JSON test.json如下:

[
  {
    "a": "a",
    "b": [
      "a",
      "b",
      "c"
    ]
  },
  {
    "a": "a"
  }
]

我想加入每個條目的字段b並處理其空的情況:

{  "a": "a",
  "b": "a, b, c"
},
{
  "a": "a",
  "b": null
}

以下命令有效...

cat test.json | 
      jq '.[] | .b as $t | if $t then {a: .a, b: $t | join(", ")} else {a: .a, b: $t} end'

...但它太長了,因為我必須寫兩次幾乎相同的構造函數。

我試圖在{}構造中移動if-then-else條件甚至//運算符,但它們會導致語法錯誤。

根據您要如何處理null / empty值,您可以嘗試以下方法:

map(.b |= (. // [] | join(", ")))

map(if .b then .b |= join(", ") else . end)

暫無
暫無

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

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