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

Запрос

Мне было интересно, если можно взять по умолчанию 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>)) и это означает, что другие разработчики, работающие с моим кодом, имеют потенциальную мину, о которой они должны знать.

0 ответов

Другие вопросы по тегам