今天花了点时间研究了一下怎么使用python处理json的文件。如下:
1. 使用模块 json 官方文档给出的是 2.6 新增加的特性
2. json的一些基本知识
数据使用key:value对形式出现,数据之间使用,分割。 数据可以是json的基本类型json文件的基本类型
对象 {} json规定key必须是字符串格式的
数组 []
字符串 ""
逻辑值 true/false
数字 1 1.2
null
一个json的格式的例子:
{"students":[{"name":"zhangshan","age":15},{"name":"wangwu","age":18}]}
python 处理 json
import json
encodedjson = json.dumps(obj) #将obj转化为python对象
decodejson = json.loads(encodedjson) @将json转化为python
转化的时候遵循下面的转化规则:
从pythpn转化为json:
python JSON
dict object
list,tuple array
str,unicode string
int,long,float number
True/False true/false
None null
从json转化为python:
JSON Python
boject dict
array list
string unicode
number(int) int,long
number(real) float
true/false True/False
null None
自定的对象和json的互转
import json class Person(): def __init__(self,name,age): self.name = name self.age = age def object_to_dict(obj): d = {} d ['__class__'] = obj.__class__.__name__ d['__module__'] = obj.__module__ d.update(obj.__dict__) return d def dict_to_obj(d): if '__class__' in d: classname = d.pop('__class__') modulename = d.pop('__module__') module = __import__(modulename) _class = getattr(module,classname) para = [ ( k.encode('ascii') ,v) for k,v in d.items() ] obj = _class(*para) return obj else: return d p = Person('zhuliang','25') jaso_encode = json.dumps(p,default=object_to_dict) print jaso_encode obj = json.loads(jaso_encode,object_hook=dict_to_obj) print obj