Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中将类对象转换为JSON_Python_Json_Python Class - Fatal编程技术网

如何在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)