>백엔드 개발 >파이썬 튜토리얼 >JSON을 사용하여 Python과 JavaScript 간에 날짜/시간 개체를 변환하는 방법

JSON을 사용하여 Python과 JavaScript 간에 날짜/시간 개체를 변환하는 방법

DDD
DDD원래의
2024-10-20 19:15:02655검색

How to Convert Datetime Objects Between Python and JavaScript Using JSON

JSON을 사용하여 Python과 JavaScript 간 날짜/시간 개체 변환

데이터 직렬화 및 역직렬화 영역에서 Python과 JavaScript 간의 날짜/시간 개체 교환은 JSON을 통한 JavaScript는 문제를 일으킬 수 있습니다. 이 문제를 어떻게 해결할 수 있는지 알아보고 이 변환을 처리하기 위한 최선의 접근 방식을 제시해 보겠습니다.

Python에서 직렬화

Python에서 datetime.datetime 개체를 Python으로 직렬화하려면 JSON에서는 Python의 내장 json.dumps() 함수를 사용할 수 있습니다. 그러나 날짜/시간 객체를 적절하게 처리하려면 사용자 정의 '기본값' 매개변수를 제공해야 합니다. 다음은 샘플 코드 조각입니다.

<code class="python">import datetime
import json

date_handler = lambda obj: (
    obj.isoformat()
    if isinstance(obj, (datetime.datetime, datetime.date))
    else None
)

json_string = json.dumps(datetime.datetime.now(), default=date_handler)
print(json_string)  # Output: "2010-04-20T20:08:21.634121"</code>

이 접근 방식을 사용하면 날짜 및 시간 표현에 널리 지원되는 ISO 8601 형식으로 날짜/시간 개체가 직렬화됩니다.

JavaScript의 역직렬화

JSON.parse()와 같이 JSON 구문 분석을 처리하는 JavaScript 라이브러리를 사용하는 경우 자동으로 ISO 8601 문자열을 Date 객체로 역직렬화합니다. JavaScript에서는 다음과 같이 표시됩니다.

<code class="js">const json_object = JSON.parse(json_string);
const js_date = new Date(json_object);  // Converted to JavaScript Date object</code>

포괄적인 기본 핸들러

보다 포괄적인 접근 방식을 위해서는 더 넓은 범위의 작업을 처리하는 기본 핸들러 기능을 사용하는 것이 좋습니다. 직렬화 중 객체 유형:

<code class="python">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))</code>

이 접근 방식을 활용하면 직렬화 중 다양한 객체 유형을 손쉽게 처리할 수 있습니다.

추가 참고 사항

  • ISO 8601은 날짜와 시간을 기계가 읽을 수 있는 형식으로 표현하기 위한 표준입니다.
  • 사용자 정의 처리기의 출력은 역직렬 변환기에서 예상하는 형식과 일치해야 합니다.
  • 자세한 내용 자세한 내용은 Python의 json.dumps() 및 JavaScript의 JSON.parse() 설명서를 참조하세요.

위 내용은 JSON을 사용하여 Python과 JavaScript 간에 날짜/시간 개체를 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.