使用jq从shell数组创建JSON数组

时间:2018-01-03 17:48:22

标签: arrays json bash jq

我们试图获取jq v1.5 64位来解析数组然后回显结果。

我们是否有正确的jq语法?

#!/bin/bash
declare -a nameArr 
nameArr=("Leia" "Darth Vader" "Anakin" "Han Solo" "Yoda")
jq -c -n  "$nameArr" 

给出错误

jq: error: syntax error, unexpected $end (Unix shell quoting issues?) at <top-level>, line 1:
Leia,    
jq: 1 compile error

1 个答案:

答案 0 :(得分:6)

要使用一个不太可能作为shell数组中的值存在的sigil,NUL是一个合适的选择。

nameArr=( "Leia" "Darth Vader" "Anakin" "Han Solo" "Yoda" )
printf '%s\0' "${nameArr[@]}" | jq -csR 'split("\u0000")'

......正确发出:

["Leia","Darth Vader","Anakin","Han Solo","Yoda"]