Tratamento de objetos de data e hora em JSON entre Python e JavaScript
Ao trocar dados entre Python e JavaScript, é comum encontrar objetos de data e hora. Para garantir a serialização e desserialização contínua desses objetos, várias abordagens podem ser empregadas.
Um método recomendado envolve a utilização do parâmetro 'default' de json.dumps em Python para lidar com objetos de data e hora. Este parâmetro permite a especificação de uma função manipuladora que converte os objetos datetime em um formato serializável.
from datetime import datetime
date_handler = lambda obj: (
obj.isoformat()
if isinstance(obj, (datetime.datetime, datetime.date))
else None
)
json_str = json.dumps(datetime.datetime.now(), default=date_handler)
print(json_str)
Essa abordagem garante que os objetos datetime do Python sejam convertidos para o formato ISO 8601, que é padronizado e reconhecido pelo JavaScript.
"2010-04-20T20:08:21.634121"
Alternativamente, uma função de manipulador padrão mais abrangente pode ser definida para lidar com vários tipos de objetos:
def handler(obj):
if hasattr(obj, 'isoformat'):
return obj.isoformat()
elif isinstance(obj, ...):
return ...
else:
raise TypeError, 'Object of type %s with value of %s is not JSON serializable' % (type(obj), repr(obj))
Esta função verifica a presença de um atributo 'isoformat', que é comum em objetos datetime e o converte em um formato serializável. Além disso, ele lida com outros tipos de objetos conforme necessário.
Ao aproveitar essas técnicas, os objetos de data e hora podem ser serializados com eficiência em Python e desserializados em JavaScript, facilitando a troca suave de dados entre as duas linguagens.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3