[Python Coding Tip] JSON ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•

Posted by

JSON (JavaScript Object Notation)์€ ๋ฐ์ดํ„ฐ ๊ตํ™˜ ํ˜•์‹์œผ๋กœ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋ฉฐ, ์‚ฌ๋žŒ๊ณผ ๊ธฐ๊ณ„๊ฐ€ ๋ชจ๋‘ ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ์„ค๊ณ„๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋Ÿ‰์˜ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ ฌํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Python์—์„œ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

JSON ๋ฐ์ดํ„ฐ ์ •๋ ฌ์˜ ์ค‘์š”์„ฑ

JSON ๋ฐ์ดํ„ฐ๋Š” ์งง์„ ๋•Œ๋Š” ๊ฐ€๋…์„ฑ์ด ์ข‹์ง€๋งŒ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์ง„๋‹ค๋ฉด, ๊ฐ€๋…์„ฑ์ด ๊ธ‰๊ฒฉํžˆ ๋‚˜๋น ์ง€๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ ฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์ด ์žˆ๋‹ค

  • ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ: ์‚ฌ๋žŒ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ฝ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋””๋ฒ„๊น… ์šฉ์ด: ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฒ„์ „ ๊ด€๋ฆฌ: ์ •๋ ฌ๋œ JSON ๋ฐ์ดํ„ฐ๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ์˜ ์ฐจ์ด๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Python์—์„œ JSON ๋ฐ์ดํ„ฐ ์ •๋ ฌ ๋ฐฉ๋ฒ•

Python์˜ json ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” json.dumps ๋˜๋Š” json.jump ํ•จ์ˆ˜์˜ indent ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

json.dumps ํ•จ์ˆ˜ ์‚ฌ์šฉ

json.dumps ํ•จ์ˆ˜๋Š” Python ๊ฐ์ฒด๋ฅผ JSON ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋ฉฐ, ์ด๋•Œ, indent ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋“ค์—ฌ์“ฐ๊ธฐ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ tab์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌํ•˜๋ฏ€๋กœ indent=4 ๋ผ๊ณ  ํ•˜์—ฌ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

import json

# ์˜ˆ์ œ JSON ๋ฐ์ดํ„ฐ
data = {
    "name": "Alice",
    "age": 30,
    "city": "New York",
    "skills": ["Python", "Machine Learning", "Data Science"]
}

# ์ •๋ ฌํ•˜์ง€ ์•Š๊ณ  ์ถœ๋ ฅ
print(data)

# ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ ฌ ํ›„ ์ถœ๋ ฅ
json_string = json.dumps(data, indent=4)
print(json_string)

์œ„ ์˜ˆ์ œ ์ฝ”๋“œ์˜ JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜์ง€ ์•Š๊ณ  ์ถœ๋ ฅํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

{'name': 'Alice', 'age': 30, 'city': 'New York', 'skills': ['Python', 'Machine Learning', 'Data Science']}

ํ•˜์ง€๋งŒ json.dumps ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋“ค์—ฌ์“ฐ๊ธฐ ๋œ JSON ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๊ฒŒ ๋œ๋‹ค.

{
    "name": "Alice",
    "age": 30,
    "city": "New York",
    "skills": [
        "Python",
        "Machine Learning",
        "Data Science"
    ]
}

json.dump ํ•จ์ˆ˜ ์‚ฌ์šฉ

json.dump ํ•จ์ˆ˜๋Š” Python ๊ฐ์ฒด๋ฅผ JSON ํŒŒ์ผ๋กœ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ํ•จ์ˆ˜์—์„œ๋„ indent ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋“ค์—ฌ์“ฐ๊ธฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

import json

# ์˜ˆ์ œ JSON ๋ฐ์ดํ„ฐ
data = {
    "name": "Alice",
    "age": 30,
    "city": "New York",
    "skills": ["Python", "Machine Learning", "Data Science"]
}

# JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ํŒŒ์ผ๋กœ ์ €์žฅ
with open("data.json", "w") as json_file:
    json.dump(data, json_file, indent=4)

์œ„ ์ฝ”๋“œ๋Š” JSON ๋ฐ์ดํ„ฐ๋ฅผ data.json ํŒŒ์ผ์— ๋“ค์—ฌ์“ฐ๊ธฐ ๋œ ํ˜•์‹์œผ๋กœ ์ €์žฅํ•œ๋‹ค.


์ถ”๊ฐ€ ์˜ต์…˜: keys ์ •๋ ฌ

JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•  ๋•Œ, ํ‚ค๋ฅผ ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ๊ฐ€๋…์„ฑ์ด ๋”์šฑ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด sort_keys ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ True๋กœ ์„ค์ •ํ•˜์—ฌ ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

import json

# ์˜ˆ์ œ JSON ๋ฐ์ดํ„ฐ
data = {
    "name": "Alice",
    "age": 30,
    "city": "New York",
    "skills": ["Python", "Machine Learning", "Data Science"]
}

# JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ ฌํ•˜๊ณ , ํ‚ค๋ฅผ ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ •๋ ฌ
json_string = json.dumps(data, indent=4, sort_keys=True)
print(json_string)

์œ„ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ JSON ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค

{
    "age": 30,
    "city": "New York",
    "name": "Alice",
    "skills": [
        "Python",
        "Machine Learning",
        "Data Science"
    ]
}

๊ฒฐ๋ก 

Python์˜ json ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค. indent ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋“ค์—ฌ์“ฐ๊ธฐ ๋œ JSON ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , sort_keys ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค๋ฅผ ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ฝ๊ณ , ๋””๋ฒ„๊น…ํ•˜๋ฉฐ, ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. JSON ๋ฐ์ดํ„ฐ ์ •๋ ฌ์€ ํŠนํžˆ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ๋ถ„์„ ์ž‘์—…์—์„œ ์œ ์šฉํ•œ ๋„๊ตฌ์ด๋ฏ€๋กœ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ์ตํ˜€ ๋†“๋Š”๋‹ค๋ฉด ์ž˜ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

Leave a Reply

์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ํ•„๋“œ๋Š” *๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค