• python --- json模块和pickle模块详解


      json:JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式(用于数据序列化和反序列化)。(适用于多种编程语言,可以与其他编程语言做数据交换)

      pickle:用于对Python对象结构进行序列化和反序列化。(只适用于python)

      对于人类而言,json是人类可读的,而pickle不是。

      json常用方法(支持列表,字典,元组等基本数据类型):

        dumps() --- 将传入的对象序列化。

          调用:json.dumps(object)

          例如(将列表,字典等不能直接写入文件的数据序列化成字符串):

    >>> json.dumps([1,2,3,4])
    '[1, 2, 3, 4]'
    >>> json.dumps({'a':1, 'b':2, 'c':3, 'd':4})
    '{"a": 1, "c": 3, "b": 2, "d": 4}'

        dump() --- 将传入的对象序列化并写入文件。

          调用:json.dump(object, fp)

          例如:

     1 import json
     2 
     3 list_1 = [1, 2, 3, 4]
     4 dict_1 = {"a": 1, "c": 3, "b": 2, "d": 4}
     5 
     6 filename = "test.json"
     7 
     8 '''
     9 with open(filename, 'w') as fp:
    10     fp.write(json.dumps(list_1))
    11     fp.write(json.dumps(dict_1))
    12 '''
    13 
    14 #等同与上面注释中的代码
    15 with open(filename, 'w') as fp:
    16     json.dump(list_1, fp)
    17     json.dump(dict_1, fp)
    View Code

        

        test.json文件中的数据:

    {"c": 3, "d": 4, "b": 2, "a": 1}

        load() --- 加载一杯存储在文件中的json数据。

          调用:json.load(fp)

          例如(是json.loads()的封装,可以发现数据加载回来后,数据类型没有发生变化):

    import json
    
    filename = "test.json"
    with open(filename, 'r') as fp:
        dict_1 = json.load(fp)
        print(type(dict_1))
        print(dict_1)
    
    
    >>> <class 'dict'>
    >>> {'b': 2, 'a': 1, 'd': 4, 'c': 3}

        loads() --- 加载python数据。

          调用:json.loads(s) (s指从文件中读出来的数据)

          例如(相当于先读取再加载):

    import json
    
    filename = "test.json"
    with open(filename, 'r') as fp:
        s = fp.read(fp) 
        dict_1 = json.loads(s)
        print(type(dict_1))
        print(dict_1)

      pickle常用方法(使用等同于json中方法的使用,不过pickle支持更为复杂的数据类型,如果你的数据只用于python程序,推荐使用pickle):

        dumps() ---

        dump() ---

        load() ---  

        loads() ---

  • 相关阅读:
    访问双工服务
    为 Silverlight 客户端生成双工服务
    RMAN创建辅助实例(副本数据库)
    js获取对话框返回值
    在ascx中使用js找不到对象问题解决
    css滑动门技术[摘自网络]
    非禁用validateRequest=false使用Page_Error()错误处理[摘自网络]
    PreviousPage跨页面传值
    jQuery Ajax 方法调用 Asp.Net WebService 的详细例子[转]
    动态的创建客户端控件[收藏网络]
  • 原文地址:https://www.cnblogs.com/God-Li/p/7397091.html
Copyright © 2020-2023  润新知