当bash jq解析json时,返回一个多行数组但是,我该如何使用这个结果呢?

时间:2017-03-21 11:57:34

标签: json bash jq

当我使用命令时:

ids=`cat $myfilename | jq -r "[.data[].id]"`

并像这样返回:

[
  "PC_PACX_0017",
  "GS_ZGRS_0001",
  "PC_PACX_0018",
  "GS_ZGRS_0002",
  "AB_HXJK_0002",
  "AB_HXJK_0001",
  "TK_TKZX_0011",
  "TL_TBAL_0002",
  "TL_TBAL_0001",
  "TS_TKRS_0001",
  "TS_TKRS_0002",
  "TS_TKRS_0003"
]

但它不能被视为一个数组,它的长度只有1.我如何使用这个结果?

1 个答案:

答案 0 :(得分:0)

数组与多行字符串不同。假设您的数据中没有换行符,请将jq调用更改为

jq -r '[.data[].id]|.[]'  # Could be simplified to '.data[].id'

并使用readArraybash 4或更高版本)填充正确的数组。

readArray -t ids < <(jq -r '[.data[].id]|.[]' "$myfilename")