如何使用jq解析json中编码为字符串的json
有没有办法在一个命令内用jq解析这个json?我想这样做:如何使用jq解析json中编码为字符串的json,json,jq,Json,Jq,有没有办法在一个命令内用jq解析这个json?我想这样做:jq.key.first。但是是的,考虑到键是一个字符串,需要首先解析为json { “键:“{\'first\':\'123\',\'second\':\'456\'” } 有没有办法在一个命令内用jq解析这个json 这取决于如何定义单个命令。可以使用包含两个jq调用的管道来完成: INPUT=”{ “键:“{\'first\':\'123\',\'second\':\'456\'” }' 回显“$INPUT”| jq-r.key
jq.key.first
。但是是的,考虑到键是一个字符串,需要首先解析为json
{
“键:“{\'first\':\'123\',\'second\':\'456\'”
}
有没有办法在一个命令内用jq解析这个json
这取决于如何定义单个命令。可以使用包含两个jq
调用的管道来完成:
INPUT=”{
“键:“{\'first\':\'123\',\'second\':\'456\'”
}'
回显“$INPUT”| jq-r.key | jq。
jq-r.key
告诉jq
回显.key
的原始值,而不是它的JSON表示形式(它是一个字符串,通常jq
输出它在输入JSON中的表示形式)
输出为:
{
“第一”:“123”,
“第二个”:“456”
}
第二次调用jq
(jq.
)对数据没有任何作用;它只是很好地格式化(如上所述)并着色(如果输出不进入终端,则不会着色)
但是,它显示它的输入是一个JSON(可以进一步处理的原始值.key
)。例如,您可以使用jq.first
来获取“123”
(编码为JSON的字符串)或jq-r.first
来获取123
(原始值)。使用fromjson
,例如
jq '.key|fromjson|.first'
正如在注释中指出的,可以通过省略最后一个管道字符来缩短
一般来说,在一次调用足够的情况下,最好避免两次调用jq。我尝试在一个jq命令中执行,而不是使用管道。但是,这也行。谢谢这也解决了问题:jq-r'[.key | fromjson][0]。首先,
的确如此。我不知道来自JSON的
。它不需要包装到数组中jq-r'.key | fromjson.first
就足够了。事实上,我遵循了一个例子,我的坏消息。