jixuaa 发表于 2015-12-3 09:50:55

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]
查看完整版本: How to handle JSON using python