zoukankan      html  css  js  c++  java
  • 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读写操作时一定要注意传递的参数是字符串还是其他数据类型, 注意格式之间的转换问题, 否则很容易出现错误.

  • 相关阅读:
    关于博客园各项工具的使用
    Java常用的7大排序算法汇总
    Java 基本数据类型(新手必看资料)
    学习Java,还需要学好哪些知识
    JavaSE基础知识总结
    python2.7.11安装pygame包
    phpstorm打开项目目录时,出现一直在扫描文件
    laravel 通过npm搭建前端资源的注意事项
    基于laravel5.2进行rabbitmq队列服务发送接收信息
    在centos7中安装composer
  • 原文地址:https://www.cnblogs.com/zyj-python/p/7413348.html
Copyright © 2011-2022 走看看