提问人:v_ns 提问时间:10/12/2023 更新时间:10/12/2023 访问量:77
解析错误:第 1 行第 4 列的数值文本无效
parse error: Invalid numeric literal at line 1, column 4
问:
我正在尝试使用解析 json,但它给出解析错误,我相信我的 Json 是有效的。jq
echo {"ok":true,"elapsed":"317ns"} | jq -r '.ok'
jq: parse error: Invalid numeric literal at line 1, column 3
你能帮忙吗?
我尝试将“放在查询周围,然后它工作正常,但我无法理解第一个问题所在。
echo '{"ok":true,"elapsed":"317ns"}' | jq -r '.ok'
true
答:
1赞
glenn jackman
10/12/2023
#1
好吧,让我们看看 shell 如何处理该 echo 语句:
$ echo {"ok":true,"elapsed":"317ns"}
ok:true elapsed:317ns
发生了几件事:
- 大括号消失了,
- 逗号消失了,
- 引号消失了。
假设你的 shell 是 bash,这在 3.5.1 大括号扩展和 3.5.9 引号删除中进行了解释
Shell 是棘手的语言。这就是为什么在任何地方使用引号很重要的原因。
echo '{"ok":true,"elapsed":"317ns"}' | jq -r '.ok'
# ...^.............................^
或者,如果 JSON 数据存储在变量中:
json='{"ok":true,"elapsed":"317ns"}'
echo "$json" | jq -r '.ok'
# ...^.....^
评论
{
"
ok:true elapsed:317ns
echo
stdout
stdin
jq
jq