How to handle JSON using python
今天花了点时间研究了一下怎么使用python处理json的文件。如下:1. 使用模块 json官方文档给出的是 2.6 新增加的特性
2. json的一些基本知识
数据使用key:value对形式出现,数据之间使用,分割。 数据可以是json的基本类型json文件的基本类型
对象{}json规定key必须是字符串格式的
数组 []
字符串 ""
逻辑值 true/false
数字 11.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
页:
[1]