Python中json的简单读写操作

Python中json的简单读写操作

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON在python中分别由list和dict组成。

这是用于序列化的两个模块:

  • json: 用于字符串和python数据类型间进行转换
  • pickle: 用于python特有的类型和python的数据类型间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

json 中dumps把数据类型转换成字符串 dump把数据类型转换成字符串并存储在文件中  loads把字符串转换成数据类型  load把文件打开从字符串转换成数据类型

json是可以在不同语言之间交换数据的,而pickle只在python之间使用。json只能序列化最基本的数据类型,josn只能把常用的数据类型序列化(列表、字典、列表、字符串、数字、),如果是日期格式、类对象!josn就不行了,而pickle可以序列化所有的数据类型,包括类,函数都可以序列化。本文主要讲解json的用法.

 1 读取json文件

代码如下:

import json
file_name = "json.json"
try:
    with open(file_name,"r",encoding="utf-8")as josn_file_handle:
        json_obj=json.load(josn_file_handle) 
        print(type(json_obj))
        # json的标准/常用格式:第一层一般是{},第二层一般是字符串/列表/字典   
        # json的基本格式:最外层一般是[],第二层一般是{},第三层一般是字符串/列表/字典 
        print (json_obj['data']['tip'])
        data_list=json_obj['data']['data']
        for duanzi in data_list:
            duanzi_content=duanzi['group']['text']
            print (duanzi_content)
            print ("*"*50)
except FileExistsError as e:  #python3的语法
    print ("py3文件不存在")
except IOError as e:           #python2的语法
    print ("py2文件不存在")
except JSONDecodeError as e:
    print ("JSON文件解码错误(数据格式不正确|没有内容)")

我写的是使用的python3环境,  如果是python2,   print 后面无需使用() 

  2 将内容写入json文件

代码如下:

import json
file_name = "user.txt"
try:
    a1 = dict()
    a1['姓名'] = "张三"
    a1['年龄'] = 20
    a1['爱好'] = ["羽毛球", "乒乓球"]
    
    a2 = dict()
    a2['姓名'] = "李四"
    a2['年龄'] = 25
    a2['爱好'] = ["篮球", "足球", "橄榄球"]
    
    info = dict()
    info['用户信息'] = [a1, a2]
    info['用户个数'] = 2
    #如何把字典/列表/对象转换为字符串?
    json_str = json.dumps(info, ensure_ascii=False)  #ensure_ascii=False禁用ascii编码
    with open(file_name, "w+", encoding="utf-8") as josn_file_handle:
        josn_file_handle.write(json_str)
except FileExistsError as e:
    print ("py3文件不存在")

这里的文件名称没有使用  .json 后缀, 主要是方便查看写入内容的格式,即json存储格式, 方便我们了解json的存储结构

在这里 我们使用了json_str = json.dumps(info, ensure_ascii=False)来把info的数据类型转化为字符串, 如果不转换的话会出现如下错误:

                

 

 总结

在做json读写操作时一定要注意传递的参数是字符串还是其他数据类型, 注意格式之间的转换问题, 否则很容易出现错误.

 

posted @ 2017-08-22 19:42  领着猫散步的鱼  阅读(1306)  评论(0编辑  收藏  举报