Измените `jsons.dump (IPv4Adress (<string>))` на идемпотентный для следующего `jsons.load` - PullRequest
0 голосов
/ 24 июня 2019

Запрос

Мне было интересно, можно ли взять поведение по умолчанию jsons.dump и сделать его идемпотентным (вернуть строку ввода) для IP-адресов Python.

Это позволило бы мне использовать объект в Python и использовать одну и ту же строку во всех сериализациях и десериализации. Таким образом, когда мы загружаем сериализованный JSON, нам не нужны разные пути управления для первой программы, которая загружает данные, и второй программы + N, которая их загружает.

Текущее поведение

>>> import ipaddress
>>> import jsons
>>> import ipaddress
>>> ipaddress.IPv4Address("192.0.0.1")
IPv4Address('192.0.0.1')
>>> jsons.dump(ipaddress.IPv4Address("192.0.0.1"))
{'_ip': 3221225473}
>>> jsons.load(jsons.dump(ipaddress.IPv4Address("192.0.0.1")))
{'_ip': 3221225473}

Желаемое поведение

>>> jsons.load(jsons.dump(ipaddress.IPv4Address("192.0.0.1")))
"192.0.0.1"

Желаемый, но, вероятно, слишком много спрашивает

>>> jsons.load(jsons.dump(ipaddress.IPv4Address("192.0.0.1")))
IPv4Address('192.0.0.1')

Текущее решение

На данный момент я изменил метод __repr__ для преобразования типов в строку. Но это означает, что я должен сделать jsons.dump(repr(<variable>)), и это означает, что другие разработчики, работающие с моим кодом, имеют потенциальную мину, о которой они должны знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...