若是將字典轉換成json,想必都很熟悉了,若是在進階點,將class類轉換成json對象該如何操做了?python
1,先定義一個類json
#定義一個Student類 class Student(object): def __init__(self,name,age,score): self.name = name self.age = age self.score = score
2,在實例化Student類,傳入3個參數ide
#實例化這個對象 s = Student('hello',20,80)
3,利用json轉換s實例化對象,看看是否成功函數
print(json.dumps(s))
4,輸出:直接報出TypeError類型錯誤,不容許直接將類轉換成jsonspa
File "C:\Python27\lib\json\encoder.py", line 184, in default raise TypeError(repr(o) + " is not JSON serializable") TypeError: <__main__.Student object at 0x00000000031239B0> is not JSON serializable Process finished with exit code 1
解決方案:code
1,定義一個轉換函數對象
#定義一個轉換函數,將Student類換成json能夠接受的類型 def student2dict(std): return { 'name':std.name, 'age':std.age, 'score':std.score }
2,在用json打印出來blog
#這樣就能夠將類對象轉換成json了,這裏利用json的default屬性來調用student2dict函數 print(json.dumps(s,default=student2dict))
3,查看輸出,這樣就能正確的將類對象經過json傳輸了it
C:\Python27\python.exe E:/python/testspider/fibon.py {"age": 20, "score": 80, "name": "hello"}