首页 > 代码库 > python处理JSON

python处理JSON

概念

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

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

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

encoding:把一个Python对象编码转换成Json字符串
decoding:把Json格式字符串解码转换成Python对象
对于简单数据类型(string、unicode、int、float、list、tuple、dict),可以直接处理。

转化对照如下:

image

从json到python的类型转化对照如下:

image


直接附代码:

# coding: utf-8
# FileName: TestJson
import json

# Python数据转json字符串
obj = [[1,2,3],123,123.123,‘abc‘,{‘key1‘:(1,2,3),‘key2‘:(4,5,6)}]

# sort_keys 是告诉编码器按照字典排序(a到z)输出
# indent参数根据数据格式缩进显示,读起来更加清晰.
# separators参数的作用是去掉,,:后面的空格,传输数据的过程中,越精简越好,冗余的东西全部去掉
encodejson = json.dumps(obj, sort_keys=True,indent=4,separators=(‘,‘,‘:‘))

# str()一般是将数值转成字符串。 
# repr()是将一个对象转成字符串显示,注意只是显示用,
print repr(obj)

print encodejson

# json字符串转Python
strJson = r‘[[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}]‘
decodejson = json.loads(strJson)
# decodejson为list
print ‘decodejson[0]:‘, decodejson[0]
print ‘decodejson[1]:‘, decodejson[1]

for val in decodejson:
    print val

# load()和dump()方法就可以实现写入文件,和读取文件
f = open("t.json", ‘w+‘)
f.seek(0)
json.dump(obj, f)

#f.write(encodejson)
f.flush()
#注:要指回文件开始位置
f.seek(0)

print json.load(f)




python处理JSON