Python标准库-Json模块(转载)

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,Python的Json模块有序列化与反序列化两个过程。即 encoding和 decoding。

  • encoding:把一个python对象编码转换成Json字符串。

  • decoding:把json格式字符串编码转换成python对象。

什么是序列化、反序列化?

我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。

即把python中的对象变成可存储的json字符串。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。

反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。

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

JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对应如下:

json的4个方法

json提供四个功能:dumps, dump, loads, load

1、dumps和dump

序列化过程

将一个python对象编码转换成Json字符串,可以存储可以网络远程传输

dumps只完成了序列化为str,将数据通过特殊的形式转换为所有程序语言都认识的字符串

dump必须传文件描述符,将序列化的str保存到文件中,将数据通过特殊的形式转换为所有程序语言都认识的字符串,并写入文件

import json

dic = {"k1":"v1"}
str1 ="HelloPython"

data1 = json.dumps(dic)
data2 = json.dumps(str1)

print (data1),type(data1)
print (data2), type(data2)

with open("test.json","w+") as f:
  json.dump(dic,f)

输出结果:

{"k1":"v1"}  <class 'str'>
"HelloPython"   <class 'str'>


生成一个test.json的文件,内容:
{"k1":"v1"}

2、loads 和 load

​ loads 只完成了反序列化,将json编码的字符串再转换为python的数据结构

​ load 只接收文件描述符,完成了读取文件和反序列化,数据文件中读取数据,并将json编码的字符串转换为python的数据结构

1 import json
2 
3 
4 with open("test.json") as f:
5       data = json.load(f)
6       #data = json.loads(f.read())  
7 
8 print (data)
9 print (type(data))

输出结果:

{"k1":"v1"}  <class 'dict'>

 

 

原文地址:https://www.cnblogs.com/yu2000/p/13884714.html