Python: l'errore Object of type is not JSON serializable

Python: l'errore  Object of type is not JSON serializable

Questo tipo di errore si verifica in Python quando si vuole convertire l'istanza di una classe nel formato JSON.

Gli oggetti definiti dall'utente, ossia le istanze di specifiche classi, necessitano di una classe intermedia che converta la loro rappresentazione interna in un dizionario. I dizionari, infatti, sono tra i tipi di dati che possono essere direttamente serializzati come JSON.

La classe intermedia dovrà estendere la classe core JSONEncoder del modulo json della standard library. Ecco un esempio:

import json
from json import JSONEncoder

class User:
    def __init__(self, name):
        self.name = name

class UserEncoder(JSONEncoder):
    def default(self, o):
        return o.__dict__

La classe UserEncoder dovrà poi essere passata come riferimento tramite il parametro cls ai metodi del modulo json che serializzano i dati in formato JSON. Ad esempio se volessimo salvare su file un'istanza della nostra classe User, scriveremo:

user = User('Gabriele')

with open('user.json', 'w') as f:
    json.dump(user, f, cls=UserEncoder)

L'output del file JSON creato nella directory corrente sarà il seguente:

{"name": "Gabriele"}
Torna su