一、json.loads、dumps
json是JavaScript程序编写数据结构的原生方式,在Python中,字典的格式和json格式在显示上是一样的,但是字典是dict,而json是str。
在python中,json的key只能是字符串,即使字典中的key是整数,经过dumps之后,也会成字符串。
1、json.dumps()和json.loads()是json格式处理函数
(可以这么理解,json是字符串)
(1)json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串)
(2)json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)
json.dumps( ) 和 jsonify ( ) 区别
( 1 ) jsonify 将数据格式转化为json格式,同时设置返回类型为:application/json
( 2 ) json.dumps ( ) 将数据格式转化为json格式,没有设置返回的数据类型,默认类型是:text/html
2、json.dump()和json.load()主要用来读写json文件函数
在Python中json是一个非常常用的模块,这个主要有4个方法:
json.dumps
json.dump
json.loads
json.load
如果json.dumps 转换成json时,字符串带u, 其实是Unicode字符串,去掉u 需要将字符串(是字符串,不是字典或者列表) 再次用utf-8进行编码,
response_data = {
}
server_data = ServerUtils.server_list_detail(Object_InteractionWithOpenstack)
response_data['servers'] = server_data
flavor_data = FlavorsUtils.flavors_list(Object_InteractionWithOpenstack)
response_data['flavors'] = flavor_data
temp_data = json.dumps(response_data, indent=4, ensure_ascii=False)
res_data=temp_data.encode('utf-8')
3、loads方法与load方法的异同
1.1不相同点:
loads操作的是字符串 , 一般是将字符串转化为python对象
load操作的是文件流 , 一般是读取文件,将文件内容转换为python对象
1.2 相同点
除了第一个参数(要转换的对象)类型不同,其他所有的参数都相同
最终都是转换成Python对象
例子:
s = '{"name": "wade", "age": 54, "gender": "man"}'
# json.loads读取字符串并转为Python对象
print("json.loads将字符串转为Python对象: type(json.loads(s)) = {}".format(type(json.loads(s))))
print("json.loads将字符串转为Python对象: json.loads(s) = {}".format(json.loads(s)))
# json.load读取文件并将文件内容转为Python对象
# 数据文件要s.json的内容 --> {"name": "wade", "age": 54, "gender": "man"}
with open('s.json', 'r') as f:
s1 = json.load(f)
print("json.load将文件内容转为Python对象: type(json.load(f)) = {}".format(type(s1)))
print("json.load将文件内容转为Python对象: json.load(f) = {}".format(s1))
转化为python对象
日常工作中最常见的就是把字符串通过json.loads转为字典,其实json的loads方法不仅可以把字符串转为字典,还可以转为任何Python对象。
比如说,转成python基本数据类型:
print('json.loads 将整数类