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

art*_*lay 1 arrays bash json jq

我们试图获得jqv1.5 64位来解析数组然后回显结果.

我们有正确的jq语法吗?

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

给出错误

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

Cha*_*ffy 7

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

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

......适当地发出:

["Leia","Darth Vader","Anakin","Han Solo","Yoda"]
Run Code Online (Sandbox Code Playgroud)