์ ๊ธ์ ๋น ๋ฅด๊ฒ ๋ณด๋ ค๋ฉด?
์ด ๋ธ๋ก๊ทธ ๋ชฉ๋ก์ ๋ถ๋งํฌํ๊ณ ํยท๋๊ตฌ ํ๋ธ์ ๊ฐ์ด๋ ์์ญ๋ ํ์ธํ์ธ์. ๊ธ ์ฝ๊ธฐ์ ๊ฐ์ ์ด๋ ๋ฉ์ผ ๊ตฌ๋ ์ด ํ์ ์์ต๋๋ค.
Python์ ๋ด์ฅ json ๋ชจ๋๊ณผ ์๋ํํฐ jsonschema ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ JSON ํ์๊ณผ ๊ตฌ์กฐ๋ฅผ ๊ฒ์ฆํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค. ์์ ํ ์ฝ๋ ์์ ์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ํฌํจํฉ๋๋ค.
์น ๊ฐ๋ฐ๊ณผ ๋ฐ์ดํฐ ์ํธ์์ฉ์์ JSON(JavaScript Object Notation)์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ํ์ ์ค ํ๋์ ๋๋ค.
API ํต์ , ์ค์ ํ์ผ, ๋ก๊ทธ ์ ์ฅ ๋ฑ์ ์๋๋ฆฌ์ค์์ ์ฌ์ฉ๋ฉ๋๋ค.
ํ์ง๋ง ๊ฐ๋ฐ ๊ณผ์ ์์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์์ฃผ ๋ง๋ฉ๋๋ค:
์ด๋ฌํ ์ค๋ฅ๋ ํ๋ก๊ทธ๋จ์ด JSON ๋ฐ์ดํฐ๋ฅผ ํ์ฑํ ์ ์๊ฒ ๋ง๋ค๋ฏ๋ก, ์ค์ ์ฌ์ฉ ์ ์ JSON ํ์์ด ์ฌ๋ฐ๋ฅธ์ง ๊ฒ์ฆํด์ผ ํฉ๋๋ค.
Python์๋ ๋งค์ฐ ์ค์ฉ์ ์ธ ๋ด์ฅ ๋ชจ๋์ธ json์ด ์์ด JSON ๋ก๋ฉ๊ณผ ๊ฒ์ฆ์ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค.
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)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 jsonschemafrom 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 ๊ฒ์ฆ๊ธฐ ์จ๋ผ์ธ ๋๊ตฌ
์ง์ ๊ธฐ๋ฅ:
๊ฐ๋ฐ์์๊ฒ ์ต๊ณ ์ JSON ์ฒ๋ฆฌ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ ๋
๋ ๋ง์ ๊ฒ์๋ฌผ์ด ๊ณง ์ถ์๋ฉ๋๋ค...
๋ธ๋ก๊ทธ๋ก ๋์๊ฐ๊ธฐ์ ๋ฐ์ดํธ ํ์ธ ๋ฐฉ๋ฒ, ๋ค๋ฃจ๋ ์ฃผ์ , ์ ์ ๋ฐฉ๋ฒ์ ๋๋ค.
์ด ๋ธ๋ก๊ทธ ๋ชฉ๋ก์ ๋ถ๋งํฌํ๊ณ ํยท๋๊ตฌ ํ๋ธ์ ๊ฐ์ด๋ ์์ญ๋ ํ์ธํ์ธ์. ๊ธ ์ฝ๊ธฐ์ ๊ฐ์ ์ด๋ ๋ฉ์ผ ๊ตฌ๋ ์ด ํ์ ์์ต๋๋ค.
JSON ๊ฒ์ฆ, ํฌ๋งท, ๋ณํ, ๋๋ฒ๊น ํ๋ฆ๊ณผ JSON Work ์ ๋ฐ์ดํธ์ด๋ฉฐ, ์ฌ์ดํธ์ ๋ฌด๋ฃ ๋ธ๋ผ์ฐ์ ๋๊ตฌ์ ๋ง๋ฌผ๋ฆฝ๋๋ค.
๊ฐ๋ฅํฉ๋๋ค. About ํ์ด์ง๋ GitHub๋ก ์ฐ๋ฝ ์ฃผ์ธ์. ์ค์ ์ฐ๋ยท๋๋ฒ๊น ์ ๋์์ด ๋๋ ์ฃผ์ ๋ฅผ ์ฐ์ ํฉ๋๋ค.