Python 将对象列表转换为 JSON 字符串

Sch*_*tin 1 python json

我正在尝试将 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)

L3v*_*han 6

JSON 不能编码生成器,它需要字符串、数字、布尔值、无、元组、列表或字典。只需将您的生成器理解转换为列表理解,它就会起作用:

x = json.dumps([z.__dict__ for z in list_mitarbeiter])
Run Code Online (Sandbox Code Playgroud)