Python标准库:JSON

JSON(JavaScript Object Notation)是一种由道格拉斯·克罗克福特构想设计、轻量级的资料交换语言,以文字为基础,且易于让人阅读。尽管 JSON 是 Javascript 的一个子集,但 JSON 是独立于语言的文本格式,並且采用了类似于 C 语言家族的一些习惯。

 

【JSON 建构于两种结构】

  • “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(objec t), 记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
  • 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

 

Python 标准库中有 json 模块,主要是执行序列化和反序列化功能:

  • 序列化:encoding,把一个 Python 对象编码转化成 json 字符串
  • 反序列化:decoding,把 json 格式字符串解码转换为 Python 数据对象 

 

编码encoding: dumps() 

import json

print(json.__all__)

# 序列化encoding:dumps(),把一个 Python 对象编码转化成 json 字符串
data = [{"name": "Tony", "lang": ("python", "english"), "age": 40}]
print(data, type(data))
data_json = json.dumps(data)
print(data_json, type(data_json))
# data和data_json的不同——lang的值从元组编程了列表,
# 对象类型由 list -> str

 

将 Python 对象转化为 json 类型,是按照下表所示对照关系转化的:

Python JSON
dict object
list, tuple array      
str, unicode string 
int, long, float number 
True true
False false
None null               

 

 

 

 

 

 

 

 

 

 

 

解码decoding: loads() 

import json

print(json.__all__)

# 序列化encoding:dumps(),把一个 Python 对象编码转化成 json 字符串
data = [{"name": "Tony", "lang": ("python", "english"), "age": 40}]
print(data, type(data))
data_json = json.dumps(data)
print(data_json, type(data_json))
# data和data_json的不同——lang的值从元组编程了列表,
# 对象类型由 list -> str

# 反序列化decoding:loads(),把 json 格式字符串解码转换为 Python 数据对象
new_data = json.loads(data_json)
print(new_data, type(new_data))
# 解码后对象类型还原成 list;lang的值还是元组,没有还原

 

解码的数据类型对应关系:

JSON Python        
object dict
array list
string unicode
number(int) int, long
number(real) float 
true True 
false False
null None

 

 

 

 

 

 

 

 

 

 

     

posted @ 2019-07-05 15:35  颗粒成仓  阅读(249)  评论(0编辑  收藏  举报