json 解析错误:第1行第4列的数字文本无效

0sgqnhkj  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(169)

我试图使用jq解析一个JSON,但它给出了解析错误,我相信我的JSON是有效的。

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
4c8rllxm

4c8rllxm1#

让我们看看shell如何处理echo语句:

$ echo {"ok":true,"elapsed":"317ns"}
ok:true elapsed:317ns

发生了几件事:

  • 牙套不见了
  • 逗号消失了,
  • 引号消失了。

假设您的shell是bash,这将在3.5.1 Brace Expansion和3.5.9 Quote Removal中进行解释
Shell是一种很复杂的语言。这就是为什么在任何地方使用引号都很重要。

echo '{"ok":true,"elapsed":"317ns"}' | jq -r '.ok'
# ...^.............................^

或者,如果JSON数据存储在变量中:

json='{"ok":true,"elapsed":"317ns"}'
echo "$json" | jq -r '.ok'
# ...^.....^

相关问题