您的位置:首页 > 编程语言 > Python开发

Python-json的用法

2017-05-21 00:32 190 查看
json的用法,平时会用到不少,以下简单介绍一下str和json的互相转化:

import json
d = {'Python':100, 'C++':70, 'Basic':60, 'others':{'C':65, 'Java':50}}
print(type(d)) # <class 'dict'>
jtxt = json.dumps(d) # 将dict转化成str
dd = json.loads(jtxt) # 将str转化成dict
print(type(jtxt)) # <str>
print(type(dd))
# 非dict对象如何实现json序列化
class Student:
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score

def __str__(self):
return '%s: %d, %d' % (self.name, self.age, self.score)
s = Student('Tom', 15, 85)
print(type(s))
print(s)
print(type(s.__dict__))
print(s.__dict__)

#输出以下内容
<class '__main__.Student'>
Tom: 15, 85
<class 'dict'>
{'name': 'Tom', 'age': 15, 'score': 85}

# 方法1
jtxt = json.dumps(s, default = lambda obj: obj.__dict__)
# 通常class的实例都有一个__dict__属性,它就是一个dict,用来存储实例变量。
print(jtxt)
print(type(jtxt))
def d2s(d):
return Student(d['name'], d['age'], d['score'])
print(json.loads(jtxt, object_hook = d2s))

# 输出以下内容
{"name": "Tom", "age": 15, "score": 85}
<class 'str'>
Tom: 15, 85

# 方法2
def s2d(s):
return s.__dict__
jtxt = json.dumps(s, default = s2d)
print(jtxt)

# 输出以下内容
{"name": "Tom", "age": 15, "score": 85}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python