使用Python读写包含中文的json

本文最后更新于2014年10月24日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

想要读写中文json,可以使用Python中的 json 库可以对json进行操作。读入数据可以使用 json.load。

f = open(fileName)  #建议使用open()替代file() http://stackoverflow.com/questions/6859499/difference-between-python-file-operation-modules-open-and-file

data = json.load(f)

json格式的数据被载入到一个dict类型的object对象中。

使用 json.dump 可以输出json。不过输出的文本并不是中文,而是转换为 utf-8的格式。此处需要:

输出中文的json。通过使用ensure_ascii=False,输出原有的语言文字。indent参数是缩进数量。

更改写文件格式:将上一步导出的 string 直接写文件会报错(可能只在Python2.7中出现):

UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 1-9: ordinal not in range(128)

这是由于此处输出的一些ascii编码不支持,所以报错。

解决的办法是,在输出的时候,对文件指定特定的UTF-8编码

 

参考链接:

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/1533.html

《使用Python读写包含中文的json》上有5条评论

  1. Python中如何将json对象读写文件 (python read write json file)
    https://stackoverflow.com/questions/12309269/how-do-i-write-json-data-to-a-file

    # 写
    import json
    with open('data.json', 'w') as fp:
    json.dump(data, fp)

    # 读
    with open('data.json') as fp:
    data_loaded = json.load(fp)

    Reading and Writing JSON to a File in Python
    https://stackabuse.com/reading-and-writing-json-to-a-file-in-python/

    Reading and Writing JSON through Python
    https://stackoverflow.com/questions/45791891/reading-and-writing-json-through-python

  2. jsonlines库:高效率的保存多个python对象
    https://mp.weixin.qq.com/s/fq5BMnC2FZyb3X4bWgX5uw

    json文件因其简洁精炼,在网上特别流行,我们写爬虫时经常碰到网站使用json格式传输数据。但是如果要存储的数据有1G,那么读取一个json文件需要一次性读入,这需要占用很大的内存,对电脑压力过大。所以我们需要将数据存储为很多个对象,通过逐行读取方式减轻内存占用压力。所以今天就讲到jsonlines这个库,希望大家能有所收获。

    jsonlines
    1、每一行都是一个json或python对象
    2、采用utf-8编码

  3. json中能使用注释么? (Can comments be used in JSON?)
    https://stackoverflow.com/questions/244777/can-comments-be-used-in-json

    No.

    The JSON should all be data, and if you include a comment, then it will be data too.

    You could have a designated data element called "_comment" (or something) that would be ignored by apps that use the JSON data.

    You would probably be better having the comment in the processes that generates/receives the JSON, as they are supposed to know what the JSON data will be in advance, or at least the structure of it.

    不行。
    JSON的内容都必须是「数据」,因此如果你包含一个注释,它也会被当做是数据。比如,你可以添加一个"_comment"元素作为注释说明,但在程序中并不处理这个字段。

  4. Python中如何将包含中文的json/dict进行格式化输出?
    https://stackoverflow.com/questions/12943819/how-to-prettyprint-a-json-file
    https://docs.python.org/2/library/json.html#json.dumps

    import json
    your_json = '["foo", {"bar":["你好", null, 1.0, 2]}]' # json array string
    parsed = json.loads(your_json) # type(parsed) == list

    print(parsed)
    # [u'foo', {u'bar': [u'\u4f60\u597d', None, 1.0, 2]}]
    print(json.dumps(parsed, indent=4, ensure_ascii=False))
    # [
    # "foo",
    # {
    # "bar": [
    # "\u4f60\u597d",
    # null,
    # 1.0,
    # 2
    # ]
    # }
    # ]
    print(json.dumps(parsed, indent=4, ensure_ascii=False))
    # [
    # "foo",
    # {
    # "bar": [
    # "你好",
    # null,
    # 1.0,
    # 2
    # ]
    # }
    # ]

发表评论

电子邮件地址不会被公开。 必填项已用*标注