List of objects to JSON with Python
You can use a list comprehension to produce a list of dictionaries, then convert that:
json_string = json.dumps([ob.__dict__ for ob in list_name])
or use a default
function; json.dumps()
will call it for anything it cannot serialise:
def obj_dict(obj):
return obj.__dict__
json_string = json.dumps(list_name, default=obj_dict)
The latter works for objects inserted at any level of the structure, not just in lists.
Personally, I'd use a project like marshmallow to handle anything more complex; e.g. handling your example data could be done with
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)
Similar to @MartijnPieters' answer, you can use the json.dumps default
parameter with a lambda, if you don't want to have to create a separate function:
json.dumps(obj, default = lambda x: x.__dict__)