Python-json的用法

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}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值