python 正则表达 (Json 反序列化 与 序列化)

烂漫一生 提交于 2020-07-25 09:50:07

一.反序列化

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交互层,所以会让很多学者有误区.
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!