R로 JSON 구문 분석


90

저는 R을 처음 접했지만 더 많이 사용할수록 실제로 SAS 또는 SPSS보다 얼마나 강력한 지 더 많이 알 수 있습니다. 제가보기에 주요 이점 중 하나는 웹에서 데이터를 가져오고 분석하는 기능입니다. 나는 이것이 가능하다고 생각하지만 (아마도 간단 할 수도 있지만) 웹에서 공개적으로 사용할 수있는 JSON 데이터를 구문 분석하려고합니다. 저는 프로그래머가 아니기 때문에 여러분이 제공 할 수있는 어떤 도움과 지시도 대단히 감사하겠습니다. 기본 작업 예제를 알려 주더라도 아마도 그것을 통해 작업 할 수 있습니다.

답변:


89

Omegahat의 RJSONIO 는 JSON 형식으로 데이터를 읽고 쓰는 기능을 제공하는 또 다른 패키지입니다.

rjson 은 S4 / S3 방법을 사용하지 않으므로 쉽게 확장 할 수 없지만 여전히 유용합니다. 불행히도 벡터화 된 작업을 사용하지 않으므로 사소하지 않은 데이터에는 너무 느립니다. 마찬가지로 JSON 데이터를 R로 읽는 경우 다소 느리므로 문제가 될 경우 큰 데이터로 확장되지 않습니다.

업데이트 (새 패키지 2013-12-03) :

jsonlite :이 패키지는 패키지의 포크입니다 RJSONIO. 파서에서 빌드 RJSONIO되지만 R 개체와 JSON 문자열간에 다른 매핑을 구현합니다. 이 패키지의 C 코드는 대부분 RJSONIO패키지에서 가져 왔으며 R 코드는 처음부터 다시 작성되었습니다. fromJSONtoJSON에 대한 드롭 인 교체 외에도 패키지에는 객체를 직렬화하는 기능이 있습니다. 또한 패키지에는 시스템 및 애플리케이션의 동적 데이터와 함께 사용하기 위해 모든 에지 케이스가 일관되게 인코딩되고 디코딩되는지 확인하기위한 많은 단위 테스트가 포함되어 있습니다.


3
나는 발견 이 비교 rjson, RJSONIO의, 그리고 도움이 jsonlite
에릭

2
위의 비교 링크는 죽었습니다. 가 올바른 링크? (차이점은 https)
woodvi

58

jsonlite 패키지는 데이터 프레임으로 JSON 변환하는 데 사용 시도에 용이하다.

예:

library(jsonlite)

# url with some information about project in Andalussia
url <- 'http://www.juntadeandalucia.es/export/drupaljda/ayudas.json'

# read url and convert to data.frame
document <- fromJSON(txt=url)

1
이것은 내가 필요한 것을 사용하기 매우 쉬웠습니다. 정말 감사합니다
알 수없는 코더에게

문서 <-fromJSON (파일 = URL); #하지만 요청 시간 초과
EngrStudent

1
이거 너무 좋아. rjson이 만든 혼란보다 훨씬 나아 보입니다.
randominstanceOfLivingThing

1
원래 json 형식이 이미 평평하지 않은 한 jsonlite수프를 먹는 포크만큼 유용합니다.
gented

19

다음은 누락 된 예입니다.

library(rjson)
url <- 'http://someurl/data.json'
document <- fromJSON(file=url, method='C')

2
이것은 나를 위해 일했지만 표시된 것처럼 파일 변수 이름에 대한 문자열을 전달하고 싶지 않습니다.
mrjrdnthms

4

RJSONIO, rjson 및 jsonlite의 fromJSON () 함수는 복잡한 중첩 json 객체에 대해 간단한 2D data.frame을 반환하지 않습니다.

이를 극복하기 위해 tidyjson 을 사용할 수 있습니다 . json을 받아 항상 data.frame을 반환합니다. 현재 CRAN에서는 사용할 수 없습니다. https://github.com/sailthru/tidyjson 에서 다운로드 할 수 있습니다.

업데이트 : tidyjson은 이제 cran에서 사용할 수 있으며 다음을 사용하여 직접 설치할 수 있습니다.install.packages("tidyjson")


2

기록을 위해 rjson과 RJSONIO는 파일 유형을 변경하지만 실제로 구문 분석하지는 않습니다. 예를 들어, 추악한 MongoDB 데이터를 JSON 형식으로 수신하고 rjson 또는 RJSONIO로 변환 한 다음 목록에없는 수많은 수동 수정을 사용하여 실제로 사용 가능한 매트릭스로 구문 분석합니다.


1

콘솔에서 RJSONIO를 사용하여 아래 코드를 시도하십시오.

library(RJSONIO)
library(RCurl)


json_file = getURL("https://raw.githubusercontent.com/isrini/SI_IS607/master/books.json")

json_file2 = RJSONIO::fromJSON(json_file)

head(json_file2)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.