티스토리 뷰

  JSON 데이터는 데이터 전송을 위해 가장 흔히 쓰이는 데이터 형식 가운데 하나이다. 이 데이터 형식이 널리 쓰이는 이유는 깔끔하고 읽기 쉬우며 파싱이 용이하기 때문이다. 또한 웹사이트에서 JavaScript로 데이터를 전송하는 데에도 많이 쓰인다. 다수의 웹사이트에서는 JSON 기반 API를 사용하고 있는데 이에 대해서는 나중에 다루겠다. 

※ 만약 파일의 확장자가 .jon이라면 그것은 아마 JSON 데이터일 것이다. 만약 파일의 확장자가 .js라면 그것은 JavaScript일 확률이 높지만 가끔 제대로 이름이 붙여지지 않은 JSON 파일일 가능성도 있다.

  코드 에디터에서 JSON 파일을 열면 각 데이터 기록이 파이썬 딕셔너리와 비슷해 보이는 것을 확인할 수 있다. 각 행에는 쌍점(:)으로 구분된 키와 값이 있으며 각 데이터 엔트리는 쉼표(,)로 구분되어 있다. 중괄호({})도 보인다. JSON 파일의 샘플 기록을 살펴 보자.

[
 {
  "Indicator" : "Life expectancy at birth (years)",
  "PUBLISH STATES" : "Published",
  "Year" : 1990,
  "WHO region" : "Europe",
  "World Bank incom group" : "High-income",
  "Country" : "Andorra",
  "Sex" : "Both sexes",
  "Display Value" : 77,
  "Numeric" : 77.00000,
  "Low" : "",
  "High" : "",
  "Comments" : ""
 }, ...
]

  형식에 따라 JSON 파일은 딕셔너리와 정확히 동일해 보일 수 있다. 위 샘플에서 각 엔트리는 파이썬 딕셔너리(중괄호({})에 의해 정의됨)이며, 이 딕셔너리들은 리스트(대괄호([])에 의해 정의됨)를 구성한다.

 

JSON 데이터 불러오기

  파이썬에서 JSON 파일은 CSV 파일에 비해 수월하게 불러올 수 있다. 다음 코드를 실행하면 JSON 데이터 파일을 열고 불러오고 불러와 출력한다.

import json

json_data = open('data-text.json').read()
data = json.loads(json_data)
for item in data:
    print(item)

1: JSON 파일을 처리하는데 사용할 json 파이썬 라이브러리를 불러온다.
3: 내장 파이썬 함수인 open을 이용하여 파일을 연다. 파일 명은 data-text.json(이것은 open함수의 첫 번째 인자이다)이다. 이 줄에서는 열린 파일의 메서드 가운데 read를 호출하며 이 메서드는 이후 파일을 읽어 json_data 변수에 저장한다.
4: json.loads()를 이용해 JSON 데이터를 파이썬에 불러온다. data 변수에 출력물이 담긴다.
5,6: for 루프를 이용해 데이터를 순회하고 이 예제의 출력물이 될 각 항목을 출력한다.

 

json_data = open('data-text.json').read()

  우리가 앞서 다루었던 open 함수를 이용해 data-text.json 파일을 열고 열린 파일에 read 메서드를 호출했다.
  CSV 파일의 예제에서 우리는 read 메서드를 사용하지 않았다. 이번에는 왜 다를까? CSV 예제에서는 파일을 읽기 전용 모드에서 열었지만 JSON 예제에서는 json_data 변수에 파일의 내용을 읽고 있다. CSV 예제에서는 open 함수가 파일인 객체를 반환하지만 JSON 예제에서는 파일을 일단 열고 난 후 내용을 읽기 때문에 str(문자열)을 반환한다. 이와 같은 차이는 파이썬 json과 csv라이브러리가 입력값을 다른 방식으로 처리하기 때문에 발생한다. CSV 리더에 문자열을 적용하려고 했다면 오류가 발생했을 것이고, 마찬가지로 JSON loads 함수에 파일을 적용하려고 했다면 또한 오류가 발생했을 것이다.
  다행인 것은 파이썬에서 손쉽게 문자열을 파일로 만들 수 있으며(예를 들면 문자열만 있는 상황에서 CSV 리더를 사용해야만 할 때와 같은 경우에 사용할 수 있다.), 또한 파일을 문자열 형식으로 읽는 것도 어렵지 않다. 파이썬에서 닫힌 파일이란, 단지 열어서 읽어야 할 파일명 문자열일 뿐이다. 파이썬 코드 몇 줄이면 파일에서 데이터를 가지고 와 문자열로 읽고 이 문자열을 특정 함수로 보낼 수 있다.

data = json.loads(json_data)

  파이썬 json 라이브러리의 loads 함수는 파일이 아닌 문자열을 필요로 한다. 파이썬 csv 라이브러리의 reader 함수는 열린 파일을 필요로 한다. 스크립트의 다음 줄에서 loads 함수를 사용하는데 이 함수는 JSON 문자열을 파이썬으로 불러온다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함