15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

point = Point2D(5, 3)

print('Object: ', point)

print('Serialized:', point.serialize())

>>>

Object: Point2D(5, 3)

Serialized: {"args": [5, 3]}

Na direção inversa, precisamos desserializar a string JSON e construir

novamente o objeto Point2D que ela representa. No exemplo de código a seguir,

definimos outra classe para desserializar os dados da classe-mãe Serializable:

class Deserializable(Serializable):

@classmethod

def deserialize(cls, json_data):

params = json.loads(json_data)

return cls(*params['args'])

Deserializable deixa muito fácil serializar e desserializar esses objetos simples e

imutáveis de forma genérica.

class BetterPoint2D(Deserializable):

# ...

point = BetterPoint2D(5, 3)

print('Before: ', point)

data = point.serialize()

print('Serialized:', data)

after = BetterPoint2D.deserialize(data)

print('After: ', after)

>>>

Before: BetterPoint2D(5, 3)

Serialized: {"args": [5, 3]}

After: BetterPoint2D(5, 3)

O problema com essa técnica é que funciona apenas quando conhecemos de

antemão o tipo dos dados serializados. (por exemplo, Point2D, BetterPoint2D).

O ideal seria ter um grande número de classes que serializassem todo tipo de

dado para o formato JSON e apenas uma função comum que desserializasse um

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!