파이썬은 JSON(JavaScript Object Notation) 형식의 데이터를 처리하는 데 매우 유용한 언어입니다. JSON은 가볍고 읽기 쉬운 데이터 형식으로, 웹 애플리케이션에서 서버와 클라이언트 간의 데이터를 주고받을 때 많이 사용됩니다. 본 글에서는 파이썬에서 JSON 파일을 읽고, 쓰고, 수정하는 방법에 대해 자세히 알아보겠습니다.
1. JSON 파일 읽기
JSON 파일을 읽기 위해서는 파이썬의 내장 모듈인 json을 사용합니다. 아래는 JSON 파일을 읽어오는 간단한 예제입니다.
import json
with open('data.json', 'r', encoding='utf-8') as file:
data = json.load(file)
print(data)
위의 코드에서 'data.json' 파일을 열고, json.load() 함수를 사용하여 파일 내용을 파이썬의 데이터 구조로 변환합니다. 이제 JSON 데이터에 접근할 수 있습니다.
2. JSON 파일 쓰기
JSON 파일에 데이터를 쓰는 것도 매우 간단합니다. 아래의 예제를 통해 JSON 파일에 데이터를 기록하는 방법을 알아보겠습니다.
import json
data = {
'name': '홍길동',
'age': 30,
'city': '서울'
}
with open('data.json', 'w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)
여기서는 json.dump() 함수를 사용하여 파이썬의 데이터를 JSON 형식으로 변환하여 파일에 저장합니다. ensure_ascii=False를 설정하면 한글이 정상적으로 저장됩니다.
3. JSON 파일 수정하기
JSON 파일의 내용을 수정하고 싶다면, 먼저 파일을 읽어온 후, 데이터를 수정하고 다시 파일에 저장하면 됩니다. 아래 예제를 통해 확인해 보겠습니다.
import json
# JSON 파일 읽기
with open('data.json', 'r', encoding='utf-8') as file:
data = json.load(file)
# 데이터 수정
data['age'] = 31
# 수정된 데이터 저장
with open('data.json', 'w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)
위의 코드에서 data['age']의 값을 수정한 후, 다시 json.dump() 함수를 사용하여 파일에 저장합니다. 이를 통해 JSON 파일의 내용을 손쉽게 수정할 수 있습니다.
JSON 활용 사례
다음은 JSON 파일을 활용한 세 가지 사례입니다. 각 사례는 JSON 파일을 읽고, 쓰고, 수정하는 방법을 포함합니다.
사례 | 설명 |
---|---|
1. 사용자 정보 관리 | 사용자의 정보를 JSON 파일로 저장하고, 필요에 따라 읽어오거나 수정하는 방법을 보여줍니다. |
2. 제품 목록 관리 | 제품 정보를 JSON 파일로 관리하며, 제품의 추가, 수정, 삭제를 다루는 사례입니다. |
3. 애플리케이션 설정 저장 | 사용자 맞춤형 애플리케이션 설정을 JSON 파일에 저장하고 불러오는 방법을 설명합니다. |
사례 1: 사용자 정보 관리
사용자의 정보를 JSON 파일로 저장하고 관리하는 것은 매우 유용한 방법입니다. 예를 들어, 사용자의 이름, 나이, 이메일 등을 JSON 형식으로 저장할 수 있습니다. 아래는 사용자의 정보를 JSON 파일에 쓰고, 읽고, 수정하는 방법을 보여주는 예제입니다.
import json
# 사용자 정보 저장
user_info = {
'name': '김철수',
'age': 25,
'email': 'cheolsu@example.com'
}
# JSON 파일에 정보 저장
with open('user_info.json', 'w', encoding='utf-8') as file:
json.dump(user_info, file, ensure_ascii=False, indent=4)
# 사용자 정보 읽기
with open('user_info.json', 'r', encoding='utf-8') as file:
user_data = json.load(file)
print(user_data)
# 사용자 정보 수정
user_data['age'] = 26
with open('user_info.json', 'w', encoding='utf-8') as file:
json.dump(user_data, file, ensure_ascii=False, indent=4)
이 예제에서는 사용자 정보를 JSON 파일에 저장하고, 다시 읽어와서 나이를 수정한 후, 다시 파일에 저장하는 과정을 보여줍니다. 이렇게 함으로써 사용자 정보를 효율적으로 관리할 수 있습니다.
사례 2: 제품 목록 관리
제품 정보를 JSON 형식으로 저장하는 것은 전자상거래 사이트나 재고 관리 시스템에서 자주 사용됩니다. 제품의 이름, 가격, 재고 수량 등을 JSON 파일에 저장하고 관리하는 방법을 살펴보겠습니다.
import json
# 제품 목록 초기화
products = [
{'name': '노트북', 'price': 1000, 'stock': 50},
{'name': '모니터', 'price': 300, 'stock': 30},
{'name': '키보드', 'price': 50, 'stock': 100}
]
# JSON 파일에 제품 목록 저장
with open('products.json', 'w', encoding='utf-8') as file:
json.dump(products, file, ensure_ascii=False, indent=4)
# JSON 파일에서 제품 목록 읽기
with open('products.json', 'r', encoding='utf-8') as file:
product_list = json.load(file)
print(product_list)
# 제품 가격 수정
product_list[0]['price'] = 950
with open('products.json', 'w', encoding='utf-8') as file:
json.dump(product_list, file, ensure_ascii=False, indent=4)
위의 예제에서는 제품 목록을 JSON 파일에 저장하고, 가격을 수정하는 과정을 보여줍니다. 이를 통해 제품 정보를 쉽게 관리할 수 있습니다.
사례 3: 애플리케이션 설정 저장
사용자 맞춤형 애플리케이션 설정을 JSON 파일에 저장하는 것도 매우 유용합니다. 예를 들어, 테마, 언어, 알림 설정 등을 JSON 형식으로 저장하고 불러오는 방법을 살펴보겠습니다.
import json
# 애플리케이션 설정 초기화
app_settings = {
'theme': 'dark',
'language': 'ko',
'notifications': True
}
# 설정을 JSON 파일에 저장
with open('app_settings.json', 'w', encoding='utf-8') as file:
json.dump(app_settings, file, ensure_ascii=False, indent=4)
# 설정을 JSON 파일에서 읽기
with open('app_settings.json', 'r', encoding='utf-8') as file:
settings = json.load(file)
print(settings)
# 설정 수정
settings['theme'] = 'light'
with open('app_settings.json', 'w', encoding='utf-8') as file:
json.dump(settings, file, ensure_ascii=False, indent=4)
이 예제에서는 애플리케이션 설정을 JSON 파일에 저장하고, 테마를 수정한 후 다시 저장하는 과정을 보여줍니다. 이를 통해 사용자는 애플리케이션의 설정을 쉽게 관리할 수 있습니다.
실용적인 팁
1. JSON 파일의 인코딩 설정
JSON 파일을 다룰 때는 항상 인코딩을 UTF-8로 설정하는 것이 중요합니다. 이렇게 하면 다양한 언어의 문자를 손실 없이 저장할 수 있습니다. ensure_ascii=False를 설정하여 한글과 같은 비ASCII 문자가 올바르게 저장되도록 해야 합니다. 또한, 파일 열기 시 인코딩을 명시하여 문제를 예방할 수 있습니다.
2. JSON 데이터 검증
JSON 데이터를 다룰 때는 데이터의 유효성을 검증하는 것이 중요합니다. JSON 데이터가 올바른 형식인지 확인하기 위해 json.loads() 함수를 사용하여 데이터가 유효한지 검사할 수 있습니다. 이를 통해 잘못된 형식의 데이터로 인해 발생할 수 있는 오류를 미리 방지할 수 있습니다.
3. JSON 데이터 예외 처리
파일을 읽거나 쓸 때는 항상 예외 처리를 고려해야 합니다. 파일이 존재하지 않거나 접근 권한이 없을 경우를 대비하여 try-except 블록을 사용하여 오류를 처리하면, 프로그램이 비정상적으로 종료되는 것을 막을 수 있습니다. 이렇게 하면 사용자에게 친절한 에러 메시지를 제공할 수 있어 좋습니다.
4. 대량의 데이터 처리
대량의 JSON 데이터를 처리할 때는 json.load()와 json.dump() 대신 json.JSONDecoder와 json.JSONEncoder를 사용하여 더 효율적인 처리가 가능합니다. 이러한 방법을 사용하면 메모리 사용을 줄이고, 성능을 개선할 수 있습니다.
5. JSON과 다른 형식 변환
JSON 데이터는 다른 데이터 형식으로 쉽게 변환할 수 있습니다. 예를 들어, JSON