使用场景:
Json数据主要用于标准化数据传输,可以应用到跨平台交互。
#coding=utf-8
'''
json字符串是一个数据转化的工具,它是双方通信的一种数据标准
举例子:张三的语言是湖北话,李四的语言是河南话,双方无法进行交流,这个时候定义一个规则大家都说普通话,然后就可以互相转化为各自的语言就可以理解对方的意思
'''
import json
class test:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
# 将class对象序列化为json字符串的函数
def toJson(obj):
return {
"a": obj.a,
"b": obj.b,
"c": obj.c
}
# 将json字符串反序列化为class对象的函数
def toTest(obj):
return test(obj['a'], obj['b'], obj['c'])
if __name__ == "__main__":
# 将class对象转化为json字符串
t1 = test("张三", "男", "18岁")
t2 = test("李四", "男", "28岁")
t3 = test("小花", "女", "20岁")
list = []
list.append(t1)
list.append(t2)
list.append(t3)
# list = [t1, t2, t3]
print list
# default=toJson 传入调用哪个序列函数
print json.dumps(list, default=toJson, encoding='utf-8')
# 将json字符串转化为class对象
j = '[{"a": "\u5f20\u4e09", "c": "18\u5c81", "b": "\u7537"}, {"a": "\u674e\u56db", "c": "28\u5c81", "b": "\u7537"}, {"a": "\u5c0f\u82b1", "c": "20\u5c81", "b": "\u5973"}]'
# object_hook=toTest 传入调用哪个反序列函数
jsonList = json.loads(j, object_hook=toTest, encoding='utf-8')
for jl in jsonList:
print jl.a , jl.b, jl.c