Tôi đang cố tạo một biểu diễn chuỗi JSON của một cá thể lớp và gặp khó khăn. Hãy nói rằng lớp được xây dựng như thế này:Nối tiếp lớp thể hiện thành JSON
class testclass:
value1 = "a"
value2 = "b"
Một cuộc gọi đến các json.dumps được thực hiện như thế này:
t = testclass()
json.dumps(t)
Nó được thất bại và nói với tôi rằng TestClass không phải là JSON serializable.
TypeError: <__main__.testclass object at 0x000000000227A400> is not JSON serializable
Tôi cũng đã cố gắng sử dụng các module dưa:
t = testclass()
print(pickle.dumps(t, pickle.HIGHEST_PROTOCOL))
Và nó cung cấp thông tin lớp dụ nhưng không phải là một nội dung theo bộ của instance lớp.
b'\x80\x03c__main__\ntestclass\nq\x00)\x81q\x01}q\x02b.'
Tôi đang làm gì sai?
http://stackoverflow.com/questions/2343535/easiest-way-to-serialize-a-simple-class-object-with-simplejson – delicateLatticeworkFever
Sử dụng một dòng, 's = json.dumps (obj , default = lambda x: x .__ dict __) ', để tuần tự hóa các biến cá thể của đối tượng (' self.value1', 'self.value2', ...). Cách đơn giản nhất và thẳng tiến nhất của nó. Nó sẽ tuần tự hóa các cấu trúc đối tượng lồng nhau. Hàm 'default' được gọi khi một đối tượng nào đó không được nối tiếp trực tiếp. Bạn cũng có thể xem câu trả lời của tôi bên dưới. Tôi tìm thấy những câu trả lời phổ biến không cần thiết phức tạp, mà có lẽ đã đúng một thời gian khá dài. – codeman48
'testclass' của bạn không có phương thức' __init __() ', vì vậy tất cả các cá thể sẽ chia sẻ cùng một thuộc tính hai lớp (' value1' và 'value2') được định nghĩa trong câu lệnh lớp. Bạn có hiểu sự khác biệt giữa một lớp và một thể hiện của một lớp không? – martineau