How to handle JSON using python

  今天花了点时间研究了一下怎么使用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

 

posted @ 2014-12-04 15:44  zhupumpkin  阅读(279)  评论(0编辑  收藏  举报