Python

json

json은 무엇이고, python에서 이를 어떻게 사용하는가?

json

json이 무엇인가?

json은 텍스트 형식이다.

보통 데이터를 저장하거나 주고받을 때 많이 사용한다.

예를 들면 이런 형태를 가진다.

{
  "name": "조세진",
  "age": 20,
  "major": "AI소프트웨어학부"
}

파이썬에서는 보통 다음과 같은 데이터와 연결된다고 보면 된다.

student = {
    "name": "조세진",
    "age": 20,
    "major": "AI소프트웨어학부"
}

json은 이런 딕셔너리 같은 데이터를 파일로 저장하거나, 다른 프로그램과 주고 받기 좋은 텍스트 형태이다.

python에서 어떻게 사용하는가?

json.dumps()란?

json.dumps()는 파이썬 데이터를 json 문자열로 변환해주는 것이다.

import json

student = {
    "name": "조세진",
    "age": 20,
    "major": "AI소프트웨어학부"
}

json_text = json.dumps(student, ensure_ascii=False, indent=2)

print(json_text)
print(type(json_text))
{
  "name": "조세진",
  "age": 20,
  "major": "AI소프트웨어학부"
}

ensure_ascii, indent가 무엇인가?

ensure_ascii는 출력할 때 아스키문자로만 출력할지 말지를 정하는 것이다.

아래의 데이터를 봐보자. age와 major의 AI를 제외하고는 전부 아스키코드 값이 아니다.

{
  "name": "조세진",
  "age": 20,
  "major": "AI소프트웨어학부"
}

ensure_asciiTrue로 되어 있다면 다음과 같이 출력될 것이다.

{
  "name": "\uc870\uc138\uc9c4",
  "age": 20,
  "major": "AI\uc18c\ud504\ud2b8\uc6e8\uc5b4\ud559\ubd80"
}

이는, 아스키 코드 값으로만 출력하기로 정했기 때문에 한글을 표현할 때 유니코드의 값을 아스키코드로 표현한 것이다.

사용자가 읽기에 정상적인 데이터로 저장하거나 읽으려면 False로 설정해주는 것이 좋다.

{
  "name": "조세진",
  "age": 20,
  "major": "AI소프트웨어학부"
}

위와 같이 출력될 것이다.

indent란?

indent는 json 파일을 보기 좋게 들여쓰기 해주는 옵션이다.

이런 데이터가 있다고 하자.

{
  "name": "조세진",
  "age": 20,
  "major": "AI소프트웨어학부"
}

만약, indent값을 0으로 설정하게 되면 다음과 같이 출력될 것이다.

{"name": "조세진","age": 20,"major": "AI소프트웨어학부"}

indent값을 2로 설정하게 되면

{
  "name": "조세진",
  "age": 20,
  "major": "AI소프트웨어학부"
}

으로 저장될 것이다.

json.loads()

json.dumps()는 json 문자열을 파이썬 데이터로 변환해주는 것이다.

import json

json_text = '{"name": "조세진", "age": 20}'

student = json.loads(json_text)

print(student)
print(type(student))
print(student["name"])
{'name': '조세진', 'age': 20}
<class 'dict'>
조세진

json 문자열의 모양에 따라 파이썬 타입이 달라진다.

import json

print(json.loads('[1, 2, 3]'))
print(type(json.loads('[1, 2, 3]')))
[1, 2, 3]
<class 'list'>

즉, json문자열을 보고 알맞는 파이썬 자료형으로 바꿔주는 것이다.

json.dump()란?

파이썬 데이터를 json파일로 저장해주는 것이다.

아까 dumps()를 사용하여 파이썬 데이터를 json문자열로 먼저 변환한 뒤, write()함수를 사용하여 파일에 쓴다.

원래 사용자가 json.dumps()를 하고, f.write()를 해야 한다. 그 귀찮음을 덜어주는 것이 json.dump() 인 것이다.

json.load()란?

json파일을 파이썬 데이터로 읽어오는 것이다.

json_text = f.read()
data = json.loads(json_text)

json.dump()처럼 load()도 우선 파일에서 json문자열 형태로 읽고, 파이썬 데이터로 변환한다.

Related records

읽던 위치가 있어요.
확대 이미지