Python JSON 구문 분석: 직렬화 및 역직렬화
Python에서 JSON 데이터를 읽고, 쓰고, 구문 분석하는 방법을 알아보세요. json.loads, json.dumps 및 JSON 인코더/디코더 사용자 정의를 마스터하세요.
개요
JSON(JavaScript Object Notation)은 최신 웹 API, 구성 및 데이터베이스 페이로드를 지배하는 경량 데이터 교환 형식입니다. JSON 구조는 Python 사전 및 목록과 유사하기 때문에 이들 간의 변환이 매우 원활합니다. Python에는 'json' 모듈이 내장되어 있어 JSON 문자열을 Python 개체로 쉽게 구문 분석하고 Python 개체를 다시 JSON 문자열로 변환할 수 있습니다.
사전과 같은 Python 객체를 원시 JSON 문자열로 변환하는 프로세스를 직렬화 또는 인코딩이라고 합니다. 이는 `json.dumps()`(문자열용) 및 `json.dump()`(파일에 직접 쓰기용)에 의해 처리됩니다. 'indent'와 같은 형식 매개변수를 제어하여 JSON을 예쁘게 만들거나 'sort_keys'를 사용하여 속성을 알파벳순으로 정렬할 수 있습니다. 반대로 JSON 문자열을 Python 사전으로 구문 분석하는 것을 역직렬화라고 하며 `json.loads()` 및 `json.load()`를 통해 실행됩니다.
문자열, 숫자, 목록, 사전과 같은 표준 Python 유형은 자동으로 JSON으로 직렬화되지만 사용자 정의 개체(클래스 또는 날짜/시간 개체 등)는 그렇지 않습니다. 사용자 정의 개체를 직접 인코딩하려고 하면 `TypeError`가 발생합니다. 이 문제를 극복하려면 개발자는 `json.JSONEncoder`에서 상속되는 사용자 정의 인코더 클래스를 만들고 `.default()` 메서드를 재정의하여 클래스를 읽을 수 있는 사전으로 직렬화해야 합니다. JSON 조작을 마스터하는 것은 외부 웹 서비스와 통신하는 데 중요합니다.
코드 및 실행 출력
사전을 JSON 문자열로 변환하고 내장된 json 라이브러리를 사용하여 다시 구문 분석합니다.
import json
# Python Dictionary representing a user profile
user_profile = {
"name": "Alex",
"is_premium": True,
"skills": ["Python", "Docker"],
"age": 28
}
# Serialize dictionary to JSON string
json_string = json.dumps(user_profile, indent=2)
print("--- JSON String ---")
print(json_string)
# Deserialize JSON string back to dictionary
parsed_dict = json.loads(json_string)
print("\n--- Parsed Python Dictionary ---")
print(f"Name: {parsed_dict['name']}")
print(f"First Skill: {parsed_dict['skills'][0]}")--- JSON String ---
{
"name": "Alex",
"is_premium": true,
"skills": [
"Python",
"Docker"
],
"age": 28
}
--- Parsed Python Dictionary ---
Name: Alex
First Skill: Python단계별 구현
- REST API에서 페이로드 전송 및 데이터 읽기
- settings.json 파일 내에 구성 기본 설정 저장
- 마이크로서비스 간에 구조화된 페이로드 전달
자주 묻는 질문
json.dump와 json.dumps의 차이점은 무엇입니까?
json.dump('s' 제외)는 JSON 데이터를 파일 스트림에 직접 씁니다. json.dumps('s' 포함)는 데이터를 Python 문자열 변수로 직렬화합니다.
JSON 디코드 오류를 어떻게 처리합니까?
잘못된 형식의 JSON 문자열을 적절하게 처리하려면 'json.JSONDecodeError'를 포착하는 try/exc 블록에 구문 분석 코드를 래핑하세요.
관련 주제
마스터 Python 사전. 키-값 쌍 데이터를 저장하고, 가져오고, 처리하는 방법을 알아보세요. 매핑의 성능과 모범 사례를 이해합니다.
Python 파일 I/OPython에서 파일을 읽고 쓰는 방법을 알아보세요. 리소스 누수 없이 파일 작업을 안전하게 처리할 수 있는 open(), read(), write() 및 컨텍스트 관리자를 마스터하세요.
Python CSVPython에서 CSV 데이터를 처리하는 방법을 알아보세요. 효율적인 테이블 구문 분석을 위한 마스터 csv.reader, csv.writer 및 DictReader/DictWriter.
권장 Python 리소스
관련 대화형 튜토리얼, 치트 시트, 코드 비교를 통해 지식을 확장하세요.
Python에서 JSON 파일을 읽고 구문 분석하는 방법
내장된 json 모듈을 사용하여 Python에서 JSON 파일을 읽고, 구문 분석하고, 로드하는 방법을 알아보세요. JSON 문자열을 사전으로 또는 그 반대로 변환하는 방법을 마스터하세요.
Python 문자열 메서드 치트 시트
Python 문자열 조작에 대한 완전한 참조 가이드입니다. 문자열 속성의 서식 지정, 검색, 분할, 바꾸기 및 확인을 마스터합니다.
Python 대 JavaScript: 어떤 프로그래밍 언어가 가장 좋나요?
Python과 JavaScript를 포괄적으로 비교합니다. 구문 차이점, 성능, 사용 사례(백엔드와 프런트엔드) 및 코딩 예제를 살펴보세요.