python - Python嵌套Obj到JSON
问题描述
如何从嵌套的 python 对象中获取 JSON
类 simplobj:
def _init_(self,fname,lname,depart):
self.fname=fname
self.lname=lname
self.depart = depart
类jsonobj:
array = []
def _init_(self,time,listOfSimpleObj):
self.time = time
self.array = listofSimpleObj
主类:
listOfSimpleObj =[]
sobj = simplobj("fname1","lname1","depart1")
listOfSimpleObj.append(sobj)
outputjsonobj = jsonobj(time,listOfSimpleObj)
output = json.dumps(outputjsonobj._dict_)
output: { "time" : "time", "array": [
{ "fname": "fname1", "lname": "lname1", "depart": "depart1"},
{ "fname": "fname2", "lname": "lname2", "depart": "depart2"},
{ "fname": "fname3", "lname": "lname3", "depart": "depart3"} ] }
解决方案
你可以创建一个json.JSONEncoder
来指定你的类应该如何序列化:
class MyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, simplobj) or isinstance(obj, jsonobj):
return obj.__dict__
return json.JSONEncoder.default(self, obj)
...
output = json.dumps(outputjsonobj, cls=MyEncoder)
推荐阅读
- c# - 将自包含的 .Net Core Windows 窗体应用程序发布到单个文件中
- bash - 只读以 bash 中传递给脚本的变量开头的行
- firebase - 使用 firebase 在颤振中设置“结构化查询”时出错
- docker - 将串行 USB 设备暴露给容器
- ios - iOS Firebase / Firestore - 数组计数多少次读取
- ios - UITextView 用新行向上滚动表格视图
- windows - 如何让 AWS GPU 在 Windows Server 上运行?
- tensorflow - 张量流:“+”运算符
- c# - Xamarin.Forms、XAML 和 XMLNS 问题
- python - 抓取:如何使用 bS4 排除特定标签