如何避免mjson.tool中的实数转换

时间:2015-11-26 09:14:53

标签: python json

我发现mjson.tool使用科学记数法转换实数,例如:

$ echo '{"k":0.000000581}' | python -mjson.tool
{
    "k": 5.81e-07
}

但是,我想避免这种转换,所以前者打印为:

{
    "k": 0.000000581
}

可以这样使用mjson.tool吗?

1 个答案:

答案 0 :(得分:1)

从我看到的,mjson模块只是将输入转换为json并返回到带缩进和排序键的字符串。

这可以通过以下方式完成:

>>> json.dumps(json.loads('{"k":0.000000581}', indent=2, sort_keys=True))
'{"k": 5.81e-07}'

为了避免科学的符号,请参阅@Veedrac对该主题的回答:
https://stackoverflow.com/a/18936966/956660

编辑:任何只重新格式化并且不会尝试解析/转换类型的工具都可以使用。

我尝试了yajl-tools

user$ sudo apt-get install yajl-tools
user$ echo '{"a": 0.0000000000000001337}' | json_pp 
{
   "a" : 1.337e-16
}
user$ echo '{"a": 0.0000000000000001337}' | json_reformat
{
    "a": 0.0000000000000001337
}