有什么方法可以在单个命令中使用 jq 解析此 json 吗?我想做这样的事情:jq .key.first。但是,是的,考虑到这key是一个字符串,需要首先解析为 json。
{
"key": "{\"first\":\"123\",\"second\":\"456\"}"
}
Run Code Online (Sandbox Code Playgroud)
pea*_*eak 11
使用fromjson,例如
jq '.key|fromjson|.first'\nRun Code Online (Sandbox Code Playgroud)\n正如评论中指出的,可以通过省略最后一个管道字符来缩写。
\n一般来说,当一次调用就足够时,最好避免调用 jq 两次。
\n有什么方法可以在单个命令中使用 jq 解析此 json 吗?
这取决于您如何定义单个命令。可以使用包含两次调用的管道来完成jq:
INPUT='{
"key": "{\"first\":\"123\",\"second\":\"456\"}"
}'
echo "$INPUT" | jq -r .key | jq .
Run Code Online (Sandbox Code Playgroud)
jq -r .key告诉jq回显 的原始值.key,而不是其 JSON 表示形式(它是一个字符串,通常jq按输入 JSON 中表示的形式输出)。
输出是:
{
"first": "123",
"second": "456"
}
Run Code Online (Sandbox Code Playgroud)
第二次调用jq( jq .) 不会对数据执行任何操作;它只是很好地格式化它(如上所示)并着色(如果它不进入终端,它不会为输出着色)。
.key但是,它表明其输入是可以进一步处理的JSON( 的原始值)。例如,您可以使用jq .first代替来获取"123"(编码为 JSON 的字符串)或jq -r .first获取123(原始值)。
| 归档时间: |
|
| 查看次数: |
2572 次 |
| 最近记录: |