我有一个很大的JSON文件,其中包含了带有完整值的bigints -不像JavaScript默认情况下喜欢的那样进行四舍五入。我们有一个解决方法来处理Node.js中的大整数,但我正在尝试使用jq (命令行工具)来清理我们的数据。然而,当我在我们的JSON文件上运行jq时,它舍入了我们所有的bigints。
有没有办法使用jq,这样它就不会舍入大整数,或者有没有其他命令行工具可以在Mac上运行,我可以用它来代替?
发布于 2020-07-22 04:37:52
到目前为止,jq提供的关于JSON数字的最好的版本是"master“版本,它很好地保留了外部数值。更新是在2019年10月22日左右进行的,jq的“主”版本似乎与最新版本(jq 1.6)一样安全。
使用最新"master“版本的示例:
jqMaster -n -M '
[0000,
10000000000000000000000000000000000000012,
1.0000000000000000000000000000000000000012,
1000000000000000000000000000000000000001210000000000000000000000000000000000000012,
0.1e123456]'
输出
[
0,
10000000000000000000000000000000000000012,
1.0000000000000000000000000000000000000012,
1000000000000000000000000000000000000001210000000000000000000000000000000000000012,
1E+123455
]
发布于 2021-07-12 23:08:57
另一种选择是使用“gojq”,这是jq的Go实现,它使用整数文字的无限精度表示。
事实上,除了在撰写本文时只在gojq的“主”版本中修复了一个bug之外,gojq支持无限精度的整数运算。错误修复:https://github.com/itchyny/gojq/commit/7a1840289029c9c038d61274ceac9b8d307c0358
https://stackoverflow.com/questions/63018852
复制相似问题