Python :json相关

一、概念
序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON、XML等。反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。

JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集。

Python2.6开始加入了JSON模块,无需另外下载,Python的Json模块序列化与反序列化的过程分别是 encodingdecoding

encoding:把一个Python对象编码转换成Json字符串
decoding:把Json格式字符串解码转换成Python对象
//保证在使用JSON处理的时候字符是以UTF8编码的

对于简单数据类型(string、unicode、int、float、list、tuple、dict),可以直接处理。

二、对简单数据类型的encoding 和 decoding
使用简单的json.dumps方法对简单数据类型进行编码,例如:

import json
obj = ['string', 1,1.1,[1,2,3],{'key':'value'}]
jsonobj = json.dumps(obj)
print jsonobj
print type(jsonobj)

输出:

["string", 1, 1.1, [1, 2, 3], {"key": "value"}]

json.dumps()方法返回了一个str对象jsonobj,我们接下来在对jsonobj进行decode,得到原始数据,需要使用的json.loads()函数:

oringalobj = json.loads(jsonobj)
print type(oringalobj)
print oringalobj[4]['key']
print oringalobj

输出:


value
[u'string', 1, 1.1, [1, 2, 3], {u'key': u'value'}]

loads方法返回了unicode类型对象。

三、JSON应用
json一键对应多值

# -*- coding:utf-8 -*-  
import json
dic1 = {}
key = 'key1'
value = 'value1'
dic1.setdefault(key, []).append(value)
value = 'value2'
dic1.setdefault(key, []).append(value)
print('dic1=', dic1)
jsobj=json.dumps(dic1)
with open('result.json','w')as f:
  f.write(jsobj)
  f.close()

字典生成json文件

# -*- coding:utf-8 -*-  
import json
key = ['key1','key2','key3']
value = ['value1','value2','value3']
d=dict(zip(key,value))
jsobj=json.dumps(d)
with open('result.json','w')as f:
  f.write(jsobj)
  f.close()

你可能感兴趣的:(Python :json相关)