比如有一个json文件test.json,内容为:{"one":{"two":"中文"}}
想要分层次的查看,于是:cat test.json | python3 -m json.tool
然后输出为:
{
"one": {
"two": "\u4e2d\u6587"
}
}
然而中文已经转换成了unicode编码,如何避免这种转换?
比如有一个json文件test.json,内容为:{"one":{"two":"中文"}}
想要分层次的查看,于是:cat test.json | python3 -m json.tool
然后输出为:
{
"one": {
"two": "\u4e2d\u6587"
}
}
然而中文已经转换成了unicode编码,如何避免这种转换?
自问自答吧,在python的标准库json文件夹下有个tool.py文件,更改其中调用的json.dump函数,传一个ensure_ascii = False参数即可,然而这种方法更改了标准库,不知道有没有其他更好的方法。
其实楼主的意思的是想要在命令行中快速地查看一个没有格式化的json文件。
但是由于Python3 json.tool 工具会将中文输出为unicode编码格式,所以无法查看。
就在刚才,我发现linux发行版自带一个叫做 json_pp
的工具,可以用来以格式化的方式输出json字符串,而且不会编码中文。
PS:ubuntu 16 、CentOS8/7 都自带这个工具
$cat test.json
{"a": 1, "b": 2, "c":[1,2,3,4,5],"d":{"hello":"world","good":"nice"}}
$cat test.json|json_pp
{
"b" : 2,
"a" : 1,
"c" : [
1,
2,
3,
4,
5
],
"d" : {
"hello" : "world",
"good" : "nice"
}
}
可以使用pprint
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import json
>>> import pprint
>>> j = json.loads('{"one":{"two":"中文"}}')
>>> pprint.pprint(j)
{'one': {'two': '中文'}}
>>> j = json.loads('{"one": {"two": "\u4e2d\u6587"}}')
>>> pprint.pprint(j)
{'one': {'two': '中文'}}
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答975 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
必须转!
json是用于交换数据的,Unicode等 多字节字符 会在传输过程中出错。
"\u4e2d\u6587" ,严格的说,这不是utf格式编码,而是
unicode转义
。更新
用
repr()
保存json对象不知道什么原因,我看不到评论。
你的意思是,只想在控制台显示一下json文件内容,是吧~
那你就把 json模块下的 tool.py 复制出来,改个名字,例如:my_json_tool.py
然后在 main() 里的 调用dump()方法处,给它添加个 参数
ensure_ascii=False
控制台命令也要作相应修改。