一.反序列化
Step 1.将json数据转换成python数据结构
- python 是何如和Json数据进行交互以及操作,Json 的载体是字符串,放到python它就是一个str
- python专门提供一个模块叫json模块,json模块下有一系列的方法可以帮助我们操作json数据
- json模块下面有一个方法叫 json.loads,json.loads可以将json字符串转换成python对应的数据结构
- student的类型是dict,也就是字典类型.
- student打印的值基本和json字符串是一样的,但本质上打印的字典类型,而不是字符串 .
- 这段json字符串'{"name":"qiyue","age":18}' 在javascript里面表示的是对象的格式.但到python里面使用json.loads把它转换成了字典. 对于同样的json字符串来说,不同的语言有可能把json字符串会变成不同数据类型,其他语言可能就不是转换字典类型,有可能转换成另外的数据结构,例如哈希列表等等,这都是不确定的.
- 对于json字符串它对应到python是dict字典这样的一种形式.如果json字符串对应到json的数据结构来说,其实它表示的是json object,也就是json的一个对象.但是json字符串转到python的时候,python是用dict字典的方式来承载这样的一个对象(json object所表示的信息)
- 在json数据格式不仅仅只有object一种数据类型,它还有array 数组
import json
json_str = '{"name":"qiyue","age":18}'
student = json.loads(json_str)
print(type(student)) //查看student数据类型
print(student)
#执行结果
$ python2.7 013.py
<type 'dict'>
{u'age': 18, u'name': u'qiyue'}
Step 2. json array 数组
- '[{"name":"qiyue","age":18},{"name":"qiyue","age":18}]':表示有两个json object对象的数组 :
- 数组也表示一种集合,类似python的元组和列表
- student 不再是dict字典类型,是list列表类型;在列表的内部有两个元素,每个元素是一个字典.
- 对于json array数组数据结构,在python里也找对应的数据结构list.
- 2个例子目的是告诉大家通过json.loads可以将json的数据类型转换成python的数据类型
- 由字符串到某个语言上的某个数据结构的过程称为反序列化.
import json
json_str = '[{"name":"qiyue","age":18},{"name":"qiyue","age":18}]'
student = json.loads(json_str)
print(type(student)) //查看类型
print(student)
#执行结果
$ python2.7 013.py
<type 'list'>
[{u'age': 18, u'name': u'qiyue'}, {u'age': 18, u'name': u'qiyue'}]
二.序列化
- 了解json 和python 之间转换的一个关系,比会使用json.loads 要重要的多.
- 前面学习了反序列化(将json数据转换成python数据类型);那么序列化呢,就是python数据类型向json字符串转换的一个过程.
- 以下是json到python相对应的数据类型.
json python
object dict
array list
string str
number int
number float
true true
false flase
null none
Step 1. python数据类型向json字符串转换
- 如果想让代码看起来很舒服,请尽量避免使用换行符\,巧妙使用[]来做换行
- 反序列化使用json.loads转换;序列化使用json.dumps转换
import json
student = [
{'name':'bayue','age':18,'flag':False},
{'name':'bayue','age':18}
]
json_str = json.dumps(student)
print(type(json_str)) //查看类型
print(json_str)
#执行结果(成功转换成了json字符串)
$ python2.7 o15.py
<type 'str'>
[{"age": 18, "flag": false, "name": "bayue"}, {"age": 18, "name": "bayue"}]
三.小谈json对象 json json字符串
- json 和 javascript 语言太过于相似,所以导致很多学者搞不清楚javascript和json的关系
- json 和 javascript 之间的关系,首先javascript语言只是一个标准的实现方案之一.
标准就是 ECMASCRIPT 是javascript 标准的实现之一
ActionScript 也是ECMASCRIPT标准实现的其中一种语言
可以把json理解为ECMASCRIPT 实现的另一个版本- json 并不是javascript的一个附属品,在某种程度上来说json和javascript平级的语言
- json 和 javascript 都对ECMASCRIPT 所制定的脚本语言规范和实现,这会让很多学者产生误区,json 最开始的时候在外部前后端分离的过程中起到了重要的作用,而服务器的语言有很多种,但外部现在最主流的就是JavaScript,因为json被大量运用于JavaScript交互层,所以会让很多学者有误区.
来源:oschina
链接:https://my.oschina.net/AnnaWu/blog/4346330