使用Python将对象列表添加到JSON

ped*_*dro 23 python serialization json object

我在将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
Run Code Online (Sandbox Code Playgroud)

list_name我的列表Object实例.

json_string 返回,例如:

{"city": "rouen", "name": "1, 2, 3 Soleil"}
{"city": "rouen", "name": "Maman, les p'tits bateaux"}
Run Code Online (Sandbox Code Playgroud)

但是我想在列表中包含所有信息的1个JSON字符串:

[{"city": "rouen", "name": "1, 2, 3 Soleil"}, {"city": "rouen", "name": "Maman, les p'tits bateaux"}]
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 69

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

json_string = json.dumps([ob.__dict__ for ob in list_name])
Run Code Online (Sandbox Code Playgroud)

或使用default功能; json.dumps()将它称之为无法序列化的任何东西:

def obj_dict(obj):
    return obj.__dict__

json_string = json.dumps(list_name, default=obj_dict)
Run Code Online (Sandbox Code Playgroud)

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


Eri*_*ell 7

与@MartijnPieters 的回答类似default,如果您不想创建单独的函数,您可以将 json.dumps参数与 lambda 一起使用: json.dumps(obj, default = lambda x: x.__dict__)