json - jq 命令解析无效的 JSON(数字用空格分隔)
问题描述
我认为它作为 JSON 无效。但是 jq 命令不会引发错误并对其进行解析。
那是什么意思?
$ echo '1 2 3' | jq .
1
2
3
( version : jq-1.5
)
解决方案
从jq
手册页:
默认情况下,jq 从标准输入读取 JSON 实体流(包括数字和其他文字)。空格仅用于分隔实体,例如 1 和 2,以及 true 和 false。
在您的示例中, jq 解析1
,它本身就是一个有效的 JSON 实体,然后继续解析2
and 3
。换句话说: jq 命令解析输入1 2 3
,因为它恰好是由空格分隔的有效 JSON 实体。
如果您使用打印所有输入实体的数组的选项,--slurp
您可以看到它将1
和视为单独的实体:2
3
# separate entities:
$ echo '1 2 3' | jq --slurp
[
1,
2,
3
]
# a single entity:
$ echo '"1 2 3"' | jq --slurp
[
"1 2 3"
]
为了比较,以下输入将无法解析:
[1 2 3]
1, 2. 3
推荐阅读
- spring-boot - 上下文路径在 Spring Boot 中不起作用
- algorithm - 遗传算法:在非常基本的数学计算中找不到最佳解决方案
- javascript - 无法通过 IIFE 在其中绑定对象方法
- php - Laravel FCM 推送通知不适用于 iOS,但适用于 Android - brozot/laravel-fcm
- html - 填充滚动 flex 容器的 100% 宽度
- spring - 关于 spring Oauth 2 的正确指南
- cordova - 在我的应用程序中应用了科尔多瓦通用链接插件,但是当我在浏览器上打开网站时,应用程序无法自动打开
- javascript - 时刻js中带有日期数字的工作日
- ios - com.google.GTLRErrorObjectDomain 代码=503 在 Firebase 登录目标 C
- scala - 使用 Spark Dataframe 遍历记录并根据某些条件将当前值与先前值连接起来