我正在尝试将 Python 对象列表解析为 Json 字符串。我有一个名为“list_mitarbeiter”的 Python 对象列表。在这个列表中是 Mitarbeiter 的对象:
class Mitarbeiter:
def __init__(self, _id, name, nachname):
self._id = _id
self.name = name
self.nachname = nachname
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下命令将 list_mitarbeiter 解析为 JSON 字符串:
x = json.dumps(z.__dict__ for z in list_mitarbeiter)
Run Code Online (Sandbox Code Playgroud)
每次我尝试这个时,我都会收到一个错误:类型生成器的对象不是 JSON 可序列化的
我已经只用列表的 1 个对象完成了它并且它起作用了,我不明白为什么当我用 for 循环为 list_mitarbeiter 中的每个对象做它时它不起作用。
X = json.dumps(list_mitarbeiter [1]。字典)^^这是工作
这是我的整个代码:
rom pymongo import MongoClient
from flask import Flask
import json
app = Flask(__name__)
class Mitarbeiter:
def __init__(self, _id, name, nachname):
self._id = _id
self.name = name
self.nachname = nachname
@app.route('/getallmitarbeiter')
def index():
cluster = MongoClient("<CONNECTON STRING>")
db = cluster["DP_0001"]
collection = db["Mitarbeiter"]
mitarbeiter = collection.find({})
list_mitarbeiter = []
for worker in mitarbeiter:
test1 = Mitarbeiter(worker["_id"], worker["name"], worker["nachname"])
list_mitarbeiter.append(test1)
x = json.dumps(z.__dict__ for z in list_mitarbeiter)
return x
if __name__ == '__main__':
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
JSON 不能编码生成器,它需要字符串、数字、布尔值、无、元组、列表或字典。只需将您的生成器理解转换为列表理解,它就会起作用:
x = json.dumps([z.__dict__ for z in list_mitarbeiter])
Run Code Online (Sandbox Code Playgroud)