Json、Pickle的四个功能:dumps、dump、loads、load

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

JSON在python中分别由listdict组成。

用于序列化的两个模块:

  • json: 可以在不同语言之间交换数据,用于字符串和python数据类型间进行转换。
  • pickle:只用于python特有的类型和python的数据类型间进行转换。

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

       json.dumps(): 对json进行编码,把数据类型转换成字符串。

       json.dump():对json进行编码, 把数据类型转换成字符串,并存储在文件中。

       json.loads(): 对json进行解码,把字符串转换成数据类型 。
       json.load(): 把文件打开,对json进行解码,从字符串转换成数据类型。

import json

dictA = {'食品': 49,'购物': 26,'旅游':16}

#编码
dictA_str=json.dumps(dictA)
dictA_str
Out[1]: '{"\\u98df\\u54c1": 49, "\\u8d2d\\u7269": 26, "\\u65c5\\u6e38": 16}'

#解码
dictA_d=json.loads(dictA_str)
dictA_d
Out[2]: {'旅游': 16, '购物': 26, '食品': 49}

#保存
#方法1:
with open('ceshi.json', 'w',encoding='utf8') as fs:# dict转josn
    json.dump(dictA,fs)

#方法2:
with open('ceshi.json', 'w',encoding='utf8') as fs:# dict转josn
    dictA_str=json.dumps(dictA)
    fs.write(dictA_str)

#读取        
#方法1: 
with open('ceshi.json', 'r',encoding='utf8') as fl:# dict转josn
    dictA_d=json.load(fl)
         
#方法2:
with open('ceshi.json', 'r',encoding='utf8') as fl:# dict转josn
    dictA_d=json.loads(fl.read())

dictA_d
Out[166]: {'旅游': 16, '购物': 26, '食品': 49}

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

import pickle

dictA = {'食品': 49,'购物': 26,'旅游':16}

#编码
dictA_str=pickle.dumps(dictA)
dictA_str
Out[1]: b'\x80\x03}q\x00(X\x06\x00\x00\x00\xe9\xa3\x9f\xe5\x93\x81q\x01K1X\x06\x00\x00\x00\xe8\xb4\xad\xe7\x89\xa9q\x02K\x1aX\x06\x00\x00\x00\xe6\x97\x85\xe6\xb8\xb8q\x03K\x10u.'

#解码
dictA_d=pickle.loads(dictA_str)
dictA_d
Out[2]: {'旅游': 16, '购物': 26, '食品': 49}

#保存
#方法1:
with open(r'ceshi.json', 'w') as fs:# dict转josn
    pickle.dump(dictA,fs)

#方法2:
with open('ceshi.json', 'w') as fs:# dict转josn
    dictA_str=pickle.dumps(dictA)
    fs.write(dictA_str)

#读取        
#方法1: 
with open('ceshi.json', 'rb') as fl:# dict转josn
    dictA_d=pickle.load(fl)
         
#方法2:
with open('ceshi.json', 'rb') as fl:# dict转josn
    dictA_d=pickle.loads(fl.read())

dictA_d
Out[166]: {'旅游': 16, '购物': 26, '食品': 49}

注意区别:

1.json是可以在不同语言之间交换数据的;

   pickle只在python之间使用。

2.json只能序列化最基本的数据类型,josn只能把常用的数据类型序列化(列表、字典、列表、字符串、数字、),比如日期格 
   式、类对象等josn就不行了;

   pickle可以序列化所有的数据类型,包括类,函数都可以序列化。

你可能感兴趣的:(Python基础知识)