对于一个对象,如一个变量,从内存中保存到磁盘中一个文件中,即进行序列化,可以如下:

javascript 结构化 json结构化数据_字符串

 一、json

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。JSON是一个标记符的序列。这套标记符包含六个构造字符、字符串、数字和三个字面名。JSON是一个序列化的对象或数组。
1. 六个构造字符:
begin-array = ws %x5B ws ; [ 左方括号
begin-object = ws %x7B ws ; { 左大括号
end-array = ws %x5D ws ; ] 右方括号
end-object = ws %x7D ws ; } 右大括号
name-separator = ws %x3A ws ; : 冒号
value-separator = ws %x2C ws ; , 逗号
2. 在这六个构造字符的前或后允许存在无意义的空白符(ws):
ws = *(%x20 /; 空间
%x09 /; 水平标签
%x0A /; 换行或换行
%x0D); 回程

值可以是对象、数组、数字、字符串或者三个字面值(false、null、true)中的一个。值中的字面值中的英文必须使用小写。
对象由花括号括起来的逗号分割的成员构成,成员是字符串键和上文所述的值由逗号分割的键值对组成,如:
    {"name": "John Doe", "age": 18, "address": {"country" : "china", "zip-code": "10000"}}
数组是由方括号括起来的一组值构成,如:
[3, 1, 4, 1, 5, 9, 2, 6]
3.2.3 字符串与C或者Java的字符串非常相似。字符串是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

python中有json模块。

javascript 结构化 json结构化数据_字符串_02

 json.dumps()将一个对象转换为一个json格式字符串。便于序列化写入文件,json.loads()将json格式字符串转换为python对象,这里是字典。

javascript 结构化 json结构化数据_字符串_03

 对于像函数这样的对象,json无法序列化:

javascript 结构化 json结构化数据_字符串_04

 二、pickle

pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议。 “Pickling”是将Python对象层次结构转换为字节流的过程, “unpickling”是反向操作,从而将字节流(来自二进制文件或类似字节的对象)转换回对象层次结构。pickle模块对于错误或恶意构造的数据是不安全的。对于序列化一个函数,可以使用pickle。

javascript 结构化 json结构化数据_字符串_05

 

javascript 结构化 json结构化数据_javascript 结构化_06

需要以字节形式写入文件,将文件的写入方式改为wb,文件中的内容:

javascript 结构化 json结构化数据_javascript 结构化_07

 反序列化

javascript 结构化 json结构化数据_python_08

 修改一下:

javascript 结构化 json结构化数据_序列化_09

要注意的是,在loads()的时候,要让python能够找到对应的定义,否则会报错。也就是序列化对象 时,本模块中要有相应的定义。对于函数来说,上面的写法很怪异,感觉没什么用处,并且重复,关于对象的序列化和反序列化,感觉主要应用于类对象,一个类的实例序列化后,保存了相关数据,在另一个程序中反序列化,直接回复这个对象的一个实例,而类定义是必须的。

同时,使用Pickler实例在序列化对象的时候,它会“记住”已经被序列化的对象引用,所以对同一对象多次调用dump(obj),pickler不会“傻傻”的去多次序列化。

对于json和pickle,有dumps()、loads()和dump()、load()不同的两对函数。

javascript 结构化 json结构化数据_python_10

 三、shelve

一个更简洁的序列化模块,只有一个open()方法:

javascript 结构化 json结构化数据_javascript 结构化_11

 open()返回的是<shelve.DbfilenameShelf object at 0x0000000002128390>,类似字典,可以使用get()获取对应键的值。

四、xml

 一个xml文件

javascript 结构化 json结构化数据_python_12

遍历xml

javascript 结构化 json结构化数据_json_13

 修改

javascript 结构化 json结构化数据_python_14

删除

javascript 结构化 json结构化数据_javascript 结构化_15

 创建

javascript 结构化 json结构化数据_python_16