Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jq解析json中编码为字符串的json_Json_Jq - Fatal编程技术网

如何使用jq解析json中编码为字符串的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解析这个json?我想这样做:
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
就足够了。事实上,我遵循了一个例子,我的坏消息。