본문 바로가기
Python

파이썬 JSON의 데이터 직렬화와 역직렬화

by 노마드 산코디 2023. 9. 22.
728x90

이번 포스팅은 파이썬 json에 대한 내용과 직렬화와 역직렬화에 대해서 정리해 보려고 합니다. json은 현대적인 데이터 교환 형식으로 널리 사용되며, 파이썬에서는 이를 효과적으로 다루기 위한 json 모듈을 제공합니다. json 데이터의 직렬화와 역직렬화 과정을 자세히 살펴보고, 이를 활용하여 파이썬 데이터를 다루는 방법을 알아보도록 하겠습니다.

 

 

 


1. JSON에 대한 개요


JSON (JavaScript Object Notation)

  • JSON은 데이터 교환을 위한 경량의 데이터 형식으로, 파이썬과 다른 프로그래밍 언어 간에 데이터를 주고받는 데 널리 사용됩니다.
  • JSON은 텍스트 기반 형식이며, 사람과 기계 모두 이해하기 쉽도록 설계되어 있습니다.

 

JSON의 기본 구조
JSON 데이터는 두 가지 기본 구조로 이루어져 있습니다:


1. 객체 (Object)

  • JSON 객체는 중괄호 {}로 둘러싸여 있으며, 키-값 쌍의 집합입니다.
  • 각 키는 문자열이며, 이에 해당하는 값은 숫자, 문자열, 불리언, 객체, 배열, 또는 null 등의 데이터 유형일 수 있습니다.
  • 키와 값은 콜론 :로 구분되며, 각 쌍은 쉼표 ,로 구분됩니다.
{
    "name": "John",
    "age": 30,
    "isStudent": false,
    "address": {
        "street": "123 Main St",
        "city": "Anytown"
    },
    "languages": ["English", "French"]
}




2. 배열 (Array)

  • JSON 배열은 대괄호 []로 둘러싸여 있으며, 값들의 순서 있는 리스트입니다.
  • 배열의 각 요소는 숫자, 문자열, 불리언, 객체, 배열, 또는 null과 같은 데이터 유형일 수 있습니다.
  • 배열 요소는 쉼표 ,로 구분됩니다.
[1, 2, 3, "apple", true, null]




이러한 JSON의 간단한 기본 구조를 이해하면, 파이썬에서 JSON 데이터를 생성하고 분석하는 과정을 더 잘 이해할 수 있습니다. JSON은 데이터 교환과 저장에 매우 유용하며, 다른 시스템과의 상호 운용성을 제공합니다.








2. 직렬화와 역직렬화

파이썬에서 JSON 데이터의 직렬화(Serialization)와 역직렬화(Deserialization)는 중요한 개념입니다.


JSON 직렬화 (Serialization)

  • 직렬화는 파이썬 객체를 JSON 형식의 문자열로 변환하는 과정입니다.
  • 이 과정을 통해 파이썬 객체의 데이터를 문자열로 표현하여, 네트워크 전송이나 파일 저장과 같은 작업에서 사용할 수 있습니다.


json.dumps() 함수

  • json 모듈의 dumps() 함수를 사용하여 파이썬 객체를 JSON 문자열로 직렬화합니다.
  • 예를 들어, json.dumps(my_dict)는 파이썬 사전(my_dict)을 JSON 형식의 문자열로 변환합니다.


예시 코드

import json

data = {
    "name": "John",
    "age": 30
}

json_string = json.dumps(data)
print(json_string)





JSON 역직렬화 (Deserialization):

  • 역직렬화는 JSON 형식의 문자열을 파이썬 객체로 변환하는 과정입니다.
  • JSON 문자열에서 데이터를 추출하여 파이썬에서 활용할 수 있도록 합니다.


json.loads() 함수

  • json 모듈의 loads() 함수를 사용하여 JSON 문자열을 파이썬 객체로 역직렬화합니다.
  • 예를 들어, json.loads(json_string)은 JSON 문자열(json_string)을 파이썬 객체로 변환합니다.


예시 코드

import json

json_string = '{"name": "John", "age": 30}'
data = json.loads(json_string)
print(data["name"])




주의사항

  • JSON 직렬화와 역직렬화 시에는 데이터 유형과 구조를 정확하게 유지해야 합니다.
  • 파이썬에서는 JSON 문자열을 파싱할 때 키 이름과 문자열을 따옴표로 묶어야 합니다.
  • 역직렬화 시에는 JSON 데이터가 예상한 형태와 일치하지 않으면 예외가 발생할 수 있으므로 주의가 필요합니다.


JSON 직렬화와 역직렬화는 파이썬과 다른 시스템 간 데이터 교환 및 저장에 매우 유용한 기술이며, 웹 개발, 데이터 분석, 설정 관리 등 다양한 분야에서 활용됩니다.







3. json의 활용 예제



1. API 데이터 가져오기

  • 웹 API에서 JSON 형식의 데이터를 가져와서 파이썬에서 활용하는 경우입니다.
  • requests 라이브러리로 API에 요청을 보내고, JSON 응답을 json.loads()를 사용하여 파싱합니다.
import requests
import json

response = requests.get('https://api.example.com/data')
json_data = json.loads(response.text)




2. JSON 파일 읽기 및 쓰기

  • JSON 형식의 데이터를 파일에 저장하거나 파일에서 읽는 경우입니다.
  • json.dump()로 파이썬 객체를 JSON 파일로 저장하고, json.load()로 JSON 파일을 파이썬 객체로 읽어옵니다.
import json

data = {"name": "Alice", "age": 25}

# JSON 파일로 저장
with open('data.json', 'w') as json_file:
    json.dump(data, json_file)

# JSON 파일 읽기
with open('data.json', 'r') as json_file:
    loaded_data = json.load(json_file)




3. 웹 스크래핑 및 데이터 추출

  • 웹 페이지에서 스크래핑하여 JSON 형식의 데이터를 추출하는 경우입니다.
  • BeautifulSoup 등의 라이브러리로 웹 페이지를 파싱한 후, 추출된 데이터를 JSON 형식으로 가공합니다.
from bs4 import BeautifulSoup
import json

# 웹 페이지 스크래핑 (예: 크롤링한 영화 정보)
soup = BeautifulSoup(html, 'html.parser')
movie_data = extract_movie_data(soup)

# 추출된 데이터를 JSON으로 변환
json_data = json.dumps(movie_data, indent=4)




4. 설정 파일 관리

  • 설정 파일을 JSON 형식으로 작성하여 파이썬 애플리케이션의 구성을 관리하는 경우입니다.
  • 설정 파일을 읽어와서 애플리케이션 설정에 사용합니다.
import json

# 설정 파일 읽기
with open('config.json', 'r') as config_file:
    config = json.load(config_file)

# 설정 값 활용
api_key = config['api_key']




이러한 예제들은 파이썬에서 JSON을 다루는 실무적인 상황을 보여주며, 데이터 교환, 저장, 웹 스크래핑, 설정 관리 등 다양한 시나리오에서 JSON의 활용성을 보여줍니다.






최종 정리

이번 포스팅에서는 파이썬 JSON의 데이터 직렬화와 역직렬화에 대해 살펴보았습니다. JSON은 파이썬과 다른 시스템 간 데이터 교환과 저장을 위한 강력한 포맷으로, 이를 다루는 데 필수적인 개념입니다.

먼저, JSON 데이터의 직렬화와 역직렬화 과정에 대해 상세히 설명했습니다. JSON을 파이썬 객체로 변환하거나 파이썬 객체를 JSON 문자열로 변환하는 방법을 다루었습니다. 이러한 과정을 통해 데이터를 효과적으로 교환하고 저장할 수 있습니다.

감사합니다.


 

728x90
반응형