python - 使用 Python 转换为 JSON 的对象列表

标签 python json object serialization

我在将 Object 实例转换为 JSON 时遇到问题:

ob = Object()

list_name = scaping_myObj(base_url, u, number_page)

for ob in list_name:
   json_string = json.dumps(ob.__dict__)
   print json_string

list_name 我有一个 Object 实例的列表。

json_string 返回,例如:

{"city": "rouen", "name": "1, 2, 3 Soleil"}
{"city": "rouen", "name": "Maman, les p'tits bateaux"}

但我只想要 1 个 JSON 字符串,其中包含列表中的所有信息:

[{"city": "rouen", "name": "1, 2, 3 Soleil"}, {"city": "rouen", "name": "Maman, les p'tits bateaux"}]

最佳答案

您可以使用列表推导生成字典列表,然后将其转换:

json_string = json.dumps([ob.__dict__ for ob in list_name])

或使用 default 函数; json.dumps() 将调用它来处理它无法序列化的任何事情:

def obj_dict(obj):
    return obj.__dict__

json_string = json.dumps(list_name, default=obj_dict)

后者适用于在结构的任何级别插入的对象,而不仅仅是在列表中。

就我个人而言,我会使用像 marshmallow 这样的项目处理更复杂的事情;例如处理您的示例数据可以使用

from marshmallow import Schema, fields

class ObjectSchema(Schema):
    city = fields.Str()
    name = fields.Str()

object_schema = ObjectSchema()
json_string = object_schema.dumps(list_name, many=True)

关于python - 使用 Python 转换为 JSON 的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26033239/

相关文章:

python - 搜索列表并打印结果

javascript - 使用 Ajax 刷新表数据在 django 中不起作用

JSON 数组编码

python - 在类上覆盖 dict()

python - python 中的 `locals()` 列表理解错误

c# - 如何从 JavaScriptSerializer 生成的对象中提取信息

javascript - 如何将2个数组复制到1个数组中?

Javascript 数组作为更具可读性的数组

php - 在angularJs中访问对象时出现未定义错误

javascript - 具有作为 prop 传递到组件的数据属性的对象不是 Vue 的 kebap 大小写