一尘不染

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

json

我将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"}]

阅读 203

收藏
2020-07-27

共1个答案

一尘不染

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

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)

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

就个人而言,我将使用棉花糖之类的项目来处理更复杂的事情。例如处理您的示例数据可以用

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)
2020-07-27