Lovetoken

저는 개발 취향을 가진 데이터 분석가 Jr. 입니다.

Navigation
 » Home
 » About Me
 » Github

R에서 rjson package 의 toJSON(), fromJSON() 함수 알아보기

02 Mar 2016 » R



JSON(JavaScript Object Notation) 포맷의 데이터를 R에서 읽어 들이기 위해 파싱해야 하는 과정이 필요하다.
rjson 라는 패키지가 이를 도와주는데 패키지 안에는 toJSON(), fromJSON() 2개의 함수가 있으며 이를 이용한 json 파일을 읽는 실습을 해 보겠다.



Ready

Example data

실습을 하기 위하여 아래와 같은 json 타입의 데이터가 있다고 가정한다.
아래의 데이터는 JSON 형을 설명하는 위키백과의 예제데이터를 적절히 수정한 것이다.

[
  {
    "Name": "Test",
    "Age": 25,
    "Sex": "F",
    "Address": "Seoul",
    "Hobby": "Basketball"
  }
]

위 예제를 워킹디렉토리의 test.json 로 저장한다.
어떠한 텍스트에디터를 이용하던 상관없으며, 저장방법은 위의 JSON 형식 텍스트를 복사한 다음 “test.json” 이란 파일명으로 저장하면 된다.



위 그림은 Sublime text 텍스트 에디터를 이용해 저장해 본 예시이다.


jsonlite package load

rjson 패키지 설치 및 로드를 한다.

install.packages("rjson")
library(rjson)



toJSON(), fromJSON() 함수 이용해보기

fromJSON()

fromJSON() 함수는 JSON 형 데이터를 R에서 헨들링 할 수 있도록 한다. (read.JSON 와 같은 함수명이 더 어울릴 수도..)

data <- fromJSON(file = "test.json")
data
## [[1]]
## [[1]]$Name
## [1] "Test"
## 
## [[1]]$Age
## [1] 25
## 
## [[1]]$Sex
## [1] "F"
## 
## [[1]]$Address
## [1] "Seoul"
## 
## [[1]]$Hobby
## [1] "Basketball"
class(data)
## [1] "list"

list 형식으로 반환된다.
data.frame 형태로 변환해 보면 다음과 같다.

df <- as.data.frame(data)
df
##   Name Age Sex Address      Hobby
## 1 Test  25   F   Seoul Basketball


toJSON()

toJSON()fromJSON() 의 반대의 성격을 가진다.
R의 list, data.frame 형 데이터를 JSON 형으로 변환한다.
방금만든 df 객체를 다시 JSON 형태로 바꾸기 위해서 toJSON(df) 를 실행시키면

toJSON(df)
## [1] "{\"Name\":\"Test\",\"Age\":25,\"Sex\":\"F\",\"Address\":\"Seoul\",\"Hobby\":\"Basketball\"}"

다시 JSON 형으로 돌아간다.

참고로 rjson package 말고도
간단히 이용할 수 있는 jsonlite package 도 있다.
이 패키지의 toJSON() 함수는 pretty 옵션인자가 더 있는데 json 형을 인지하기 쉽게 단락을 나누고 indent 를 주어
가시적으로 반환하는 기능이 있다.

library(jsonlite)
toJSON(df, pretty = T)
## [
##   {
##     "Name": "Test",
##     "Age": 25,
##     "Sex": "F",
##     "Address": "Seoul",
##     "Hobby": "Basketball"
##   }
## ]

첫 서두에 있는 예제 데이터와 똑같이 출력된 것을 볼 수 있다.