๐ Python์ผ๋ก JSON ๊ฒ์ฆํ๊ธฐ (JSON ๊ฒ์ฆ๊ธฐ ํํ ๋ฆฌ์ผ)
JSON ๊ฒ์ฆ์ด๋?
์น ๊ฐ๋ฐ๊ณผ ๋ฐ์ดํฐ ์ํธ์์ฉ์์ JSON(JavaScript Object Notation)์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ํ์ ์ค ํ๋์ ๋๋ค.
API ํต์ , ์ค์ ํ์ผ, ๋ก๊ทธ ์ ์ฅ ๋ฑ์ ์๋๋ฆฌ์ค์์ ์ฌ์ฉ๋ฉ๋๋ค.
ํ์ง๋ง ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์์ฃผ ๋ง๋ฉ๋๋ค:
- โข JSON ํ์ผ ํ์ ์ค๋ฅ;
- โข ๊ดํธ๊ฐ ๋ซํ์ง ์์;
- โข ๋ฌธ์์ด ๋ฐ์ดํ ๋๋ฝ;
- โข ๋ถํ์ํ ์ผํ ๋ฑ.
์ด๋ฌํ ์ค๋ฅ๋ ํ๋ก๊ทธ๋จ์ด JSON ๋ฐ์ดํฐ๋ฅผ ํ์ฑํ ์ ์๊ฒ ๋ง๋ค๋ฏ๋ก, ์ค์ ์ฌ์ฉ ์ ์ JSON ํ์์ด ์ฌ๋ฐ๋ฅธ์ง ๊ฒ์ฆํด์ผ ํฉ๋๋ค.
Python์ผ๋ก JSON ํ์ ๊ฒ์ฆํ๊ธฐ
Python์๋ ๋งค์ฐ ์ค์ฉ์ ์ธ ๋ด์ฅ ๋ชจ๋์ธ json์ด ์์ด JSON ๋ก๋ฉ๊ณผ ๊ฒ์ฆ์ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค.
โ ์์ 1: ๊ธฐ๋ณธ ๊ฒ์ฆ
import json
def validate_json(json_string):
try:
json.loads(json_string)
print("โ
JSON ํ์์ด ์ฌ๋ฐ๋ฆ
๋๋ค!")
except json.JSONDecodeError as e:
print("โ JSON ํ์ ์ค๋ฅ:", e)
# ์์ JSON
data = '{"name": "Alice", "age": 25}'
validate_json(data)์คํ ๊ฒฐ๊ณผ:
โ
JSON ํ์์ด ์ฌ๋ฐ๋ฆ
๋๋ค!์ ๋ ฅ ํ์์ด ์๋ชป๋ ๊ฒฝ์ฐ, ์๋ฅผ ๋ค์ด:
data = '{"name": "Alice", "age": 25,}' # ๋ถํ์ํ ์ผํ
validate_json(data)๊ฒฐ๊ณผ:
โ JSON ํ์ ์ค๋ฅ: Expecting property name enclosed in double quotes: line 1 column 28 (char 27)โ ์์ 2: JSON ํ์ผ ๊ฒ์ฆ
import json
def validate_json_file(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
try:
json.load(f)
print(f"โ
ํ์ผ {file_path}์ JSON ํ์์ด ์ฌ๋ฐ๋ฆ
๋๋ค!")
except json.JSONDecodeError as e:
print(f"โ {file_path} ํ์ ์ค๋ฅ: {e}")
# ํธ์ถ
validate_json_file('data.json')์ด ์คํฌ๋ฆฝํธ๋ ์๋์ผ๋ก ํ์ผ์ ์ฝ๊ณ ๋ด์ฉ์ด ์ ํจํ JSON์ธ์ง ๊ฒ์ฆํฉ๋๋ค.
ํฅ์๋ ๊ฒ์ฆ: ๊ตฌ์กฐ์ ํ๋ ํ์ธ
๊ตฌ๋ฌธ์ ์ ํ์ฑ ์ธ์๋, ๋๋ก๋ JSON์ ๊ตฌ์กฐ๊ฐ ์์๊ณผ ์ผ์นํ๋์ง๋ ๊ฒ์ฆํ๊ณ ์ถ์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด name, age, email ํ๋๊ฐ ํ์์ฌ์ผ ํ๋ค๋ ๊ฒ์ฒ๋ผ์.
์ด๋ฅผ ์ํด ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ jsonschema๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ค์น:
pip install jsonschema์์ :
from jsonschema import validate, ValidationError
# ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ์
schema = {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"},
"email": {"type": "string"}
},
"required": ["name", "age"]
}
# ํ
์คํธ ๋ฐ์ดํฐ
data = {"name": "Alice", "age": 25}
try:
validate(instance=data, schema=schema)
print("โ
JSON ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์ ํจํฉ๋๋ค!")
except ValidationError as e:
print("โ JSON ๊ตฌ์กฐ ์ค๋ฅ:", e.message)์คํ ๊ฒฐ๊ณผ:
โ
JSON ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์ ํจํฉ๋๋ค!ํ๋๊ฐ ๋๋ฝ๋์๊ฑฐ๋ ํ์ ์ด ์๋ชป๋ ๊ฒฝ์ฐ, ๋ช ํํ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
์์ ํ ์์ : ํ์ผ ์ผ๊ด ๊ฒ์ฆ๊ธฐ
import os
import json
def validate_json_files(folder):
for file in os.listdir(folder):
if file.endswith('.json'):
path = os.path.join(folder, file)
try:
with open(path, 'r', encoding='utf-8') as f:
json.load(f)
print(f"โ
{file} ๊ฒ์ฆ ํต๊ณผ")
except json.JSONDecodeError as e:
print(f"โ {file} ํ์ ์ค๋ฅ: {e}")
# ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ JSON ํ์ผ์ ์ผ๊ด ๊ฒ์ฆ
validate_json_files(".")๊ฒฐ๋ก
Python์ผ๋ก JSON์ ๊ฒ์ฆํ๋ ๊ฒ์ ๋จ์ํ๊ณ ํจ์จ์ ์ผ ๋ฟ๋ง ์๋๋ผ, ์๋ํ๋ ํ ์คํธ, ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ ๋ฑ์ ์ํฌํ๋ก์ฐ์๋ ํตํฉํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ์์ JSON ๊ฒ์ฆ์ ๋ ๋ฆฝ์ ์ธ ๋จ๊ณ๋ก ์ฌ์ฉํ์ฌ ํ๋ก๋์ ํ๊ฒฝ์์ ํ์ ์ค๋ฅ๋ก ์ธํ ์ธํฐํ์ด์ค ์์ธ๋ฅผ ํผํ ์ ์์ต๋๋ค.
์คํฌ๋ฆฝํธ๋ฅผ ์๋์ผ๋ก ์คํํ๊ณ ์ถ์ง ์๋ค๋ฉด, ์จ๋ผ์ธ ๋๊ตฌ๋ฅผ ์ง์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค:
๐ JSON ๊ฒ์ฆ๊ธฐ ์จ๋ผ์ธ ๋๊ตฌ
์ง์ ๊ธฐ๋ฅ:
- โข ์จ๋ผ์ธ ํฌ๋งทํ ๊ณผ ๊ฒ์ฆ
- โข ์ํด๋ฆญ ๋ฏธํ์ ์์ถ
- โข CSV / XML๋ก ๋ณํ
- โข ์ผ๋ฐ์ ์ธ ๊ตฌ๋ฌธ ์ค๋ฅ ์๋ ์์
๐ ๊ด๋ จ ๊ธฐ์ฌ
JSON Work ํ 2025๋ 1์ 15์ผ