class PythonObjectEncoder(json.JSONEncoder):

    def default(self, obj):
        return {'_python_object': pickle.dumps(obj).decode('latin1')}

def as_python_object(dct):
    if '_python_object' in dct:
        return pickle.loads(dct['_python_object'].encode('latin1'))
return dct
data = [1, 2, 3, set(['knights', 'who', 'say', 'ni']), {'key': 'value'},
    Decimal('3.14')]
j = json.dumps(data, cls=PythonObjectEncoder, indent=4)
data2 = json.loads(j, object_hook=as_python_object)
assert data == data2
Создание сериализуемого объекта JSON с помощью обычного кодировщика