mac pretty print json文件没有字符转义

时间:2017-01-14 07:43:11

标签: python json

在Mac OS上运行。 我需要将存储在本地磁盘上的file.json打印到新文件file_formatted.json,而不会转换数据的任何字符。

我目前正在使用python json.tool:

cat file.json | python -m json.tool> file_formatted.json

格式很好,但转换字符,请查看下面的示例 MSSyncTable* table已更改为

我检查了文档(https://docs.python.org/2/library/json.html),但找不到任何有用的信息,是否有办法禁用字符转义?

原件:

\u2026

后:

     {
     "date": "2016-06-01",
     "duration": "00:13:25"
     "subTitle": "A world first is one click away!",
     "title": "Alice in wonderland…"
     }

3 个答案:

答案 0 :(得分:1)

要获得所需的结果,应使用参数json.dump()调用json.dumps()(或ensure_ascii=False)命令(默认值为True)。

答案 1 :(得分:1)

两个版本的JSON代表完全相同的对象:

>>> import json
>>> json.loads('{"foo": "…"}') == json.loads('{"foo": "\u2026"}')
True

如果希望Python不转义最终输出中的字符,the module不会为ensure_ascii标志提供任何命令行界面。不过你可以自己做:

$ echo '{"foo": "\u2026"}' | python -c "import sys,json; print(json.dumps(json.load(sys.stdin), indent=4, ensure_ascii=False).encode('utf-8'))"
{
    "foo": "…"
}

答案 2 :(得分:0)

    python3 -m json.tool [path of your file] --no-ensure-ascii

--no-ensure-scii参数可以实现

禁止转义非ASCII字符

摘自json.tool

的文档