如何在Python中将类对象转换为JSON
输出:如何在Python中将类对象转换为JSON,python,json,python-class,Python,Json,Python Class,输出:{“firstName”:“Raj”} 但我需要这样的输出 {“firstName”:“Raj”,“secondName”:“} 要解决这个问题,请首先从正确的类定义开始 import json class Abc: firstName = '' secondName = '' obj = Abc() obj.firstName = 'Raj' res = json.dumps(obj, default=lambda o: o.__dict__) print(r
{“firstName”:“Raj”}
但我需要这样的输出
{“firstName”:“Raj”,“secondName”:“}
要解决这个问题,请首先从正确的类定义开始
import json
class Abc:
firstName = ''
secondName = ''
obj = Abc()
obj.firstName = 'Raj'
res = json.dumps(obj, default=lambda o: o.__dict__)
print(res)
然后定义适当的jsonecoder
子类:
class Abc:
def __init__(self, first='', second=''):
self.firstName = first
self.secondName = second
尝试给类一个构造函数并创建为成员字段。例:
this.firstName=''
和this.secondName=''
这能回答你的问题吗?对于只包含数据且没有接口的简单类,您可能有兴趣检查。而不是您的downvoter,但如果我这样做,那将是因为此问题和答案存在重复项。我无法使用此AbcEncoder方法,因为在我的程序类中包含30个变量。。。。。。。。我提出了一个简单的问题来理解这个问题,我不知道变量的数量是如何相关的。@Civs足够公平,尽管我认为类定义需要指出。(例如,dupe中的一个答案建议将实例的\uuu dict\uuu
属性传递给json.dumps
,但这不适用,因为原始代码中的secondName
是一个类属性,不会在obj中。)(我有点希望json
支持\uuuuu-json\uuuuu
和\uu-uu-uu-uu-uu-uu-json\uuuuu
钩子,您可以将它们添加到类中,但我还没有真正考虑到可能会带来什么问题。)
import json
class AbcEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Abc):
return {"firstName": obj.firstName, "secondName": obj.secondName}
return super().default(obj)
obj = Abc("Raj")
res = json.dumps(obj, cls=AbcEncoder)