实在不明白为什么死在这儿了
Topic source>>> import json
>>> class cdc(object):
def __init__(self,name,age):
self.name = name
self.age = age
>>> def cdc2dict(std):
return{'name':std.name,'age':std.age}
>>> s = cdc("hh",24)
>>> json.dumps(s,default = cdc2dict)
'{"name": "hh", "age": 24}'
没毛病,可能是某个小细节的问题。
import json
class cdc(object):
def __init__(self,name,age):
self.name = name
self.age = age
def cdc2dict(std):
return {'name':std.name,'age':std.age}
s = cdc("哇哦",24)
s1 = json.dumps(s, default = cdc2dict,ensure_ascii=False)
print (s1)
没毛病老铁
class Student(object):
def __init__(self,name,age,score):
self.name = name
self.age = age
self.score = score
def student2dict(self,std):
return {
'name':std.name,
'age':std.age,
"score":std.score
}
s = Student('Bob',20,88)
print(json.dumps(s,default = s.student2dict))
这样就可以了
有个题外话,有点儿 low,脸红的请教一下: s.student2dict 为什么没有传入参数呢(像这样s.student2dict(参数))?self.name 和 std.name 输出是一样的,但是能解释下区别么?
In [39]: class Student(object): ...: def init(self,name,age,score): ...: self.name = name ...: self.age = age ...: self.score = score ...: def student2dict(self,std): ...: print(std) ...: return { ...: 'name':self.name, ...: 'age':self.age, ...: "score":self.score ...: } ...: s = Student('Bob',20,88) ...: print(s) ...: print(s.student2dict) ...: print(json.dumps(s,default = s.student2dict)) 输出是这样的:
<__main__.Student object at 0x7ff9fcb40a90>
<bound method Student.student2dict of <__main__.Student object at 0x7ff9fcb40a90>>
<__main__.Student object at 0x7ff9fcb40a90> {"name": "Bob", "age": 20, "score": 88}
- 1
- 2
沉默的斑竹
import json
class cdc(object): def init(self,name,age): self.name = name self.age = age
s = cdc("哇哦",24)
#json.dumps(s, default = cdc2dict)
加粗放大这句错了,说是cdc2dict不认得,我懵逼了