JSON 관련 R 패키지, jsonlite 너로 정했다

R에서 JSON 파일을 다루는 패키지는 3가지 정도 있다. (글은 이 중 1,2만 다룸)

  1. rjson
  2. jsonlite
  3. RJSONIO

복수의 object들을 포함한 json 파일을 R 로 import 하는 경우, jsonlite가 선호된다.

선호 이유는, import 결과물인 list 형태에서
JSON object의 data.frame 추출이 jsonlite에서 더 용이하기 때문이다.

.

#rjson 으로 import
my_j <- rjson::fromJSON(file=’파일명.json’)

#jsonlite 으로 import
my_jl <- jsonlite::fromJSON(‘파일명.json’)

.

위 코드 실행했을 때 결과는 아래와 같다.

rjson

rjson의 결과(my_j)는 Large list 이고,
jsonlite 의 결과(my_jl)는 일반적인 list 이다.

rjson의 결과(my_j)가 Large list 인 이유는,
json array 내 각각의 object 마다 임의 숫자로 numbering이 부여되기 때문이다. (ex.[1], [2], …)
이 numbering 으로 인해 as.data.frame 을 사용하여 list 에서 data frame으로 변환 시 rjson 에서는 오류가 발생한다.
Error in (function (…, row.names = NULL, check.rows = FALSE, check.names = TRUE, :
arguments imply differing number of rows: 1, 0

반면 jsonlite 에서는 성공적으로 변환된다.

.

결론 : jsonlite 를 쓰자.

 

인용은 아니지만, R json 패키지 관련 참고할 만한 링크 : https://rstudio-pubs-static.s3.amazonaws.com/31702_9c22e3d1a0c44968a4a1f9656f1800ab.html

JSON 개요

JavaScript Object Notation

특징

  • 간결성 (객체 표기법)
  • 독립성 (텍스트 기반)  : 프로그램 언어와 운영체제에 독립적

문법

JSON은 JavaScript의 객체 표기법에서
– Literal : Variable (데이터를 저장할 수 있는 메모리 공간)과 다르게 해석되는 값 그 자체
– Property : Name, Value로 구성
를 표현하는 방법만 가져와서 사용한다.

 

형식

  • Object : name/value 쌍들의 비순서화된 SET (brace 사용)
  • Array : 값들의 순서화된 collection (bracket 사용)
  • Value : 다음 종류의 값들 사용 가능함
  • String : 큰따옴표(Quotation mark)안에 둘러 싸인 zero 이상 Unicode 문자들의 조합

    )

  • Number

참고
http://www.json.org/json-ko.html
http://tcpschool.com/json/json_basic_structure