2017-11-28 1 views
0

R을 사용하여 .json 파일을 읽을 수는 없지만 웹 사이트에서 볼 수 있습니다.R에서 jsonlite를 사용하여 json 형식의 파일을 읽을 수 없습니다.

다음은 여기 내 코드입니다

https://data.kcg.gov.tw/dataset/7999ac19-e7dc-496a-9b7d-bd8daec107bd/resource/19d06299-a80c-42c2-a9b8-63d4466161a0/download/priceshistory20160101-20161231.json

↓ 데이터의 사이트입니다.

library(jsonlite) 
link <- "https://data.kcg.gov.tw/dataset/7999ac19-e7dc-496a-9b7d-bd8daec107bd/resource/19d06299-a80c-42c2-a9b8-63d4466161a0/download/priceshistory_20160101-20161231.json" 
kh <- fromJSON(link) 

Error in open.connection(con, "rb") : Couldn't connect to server

어떤 도움을 감사 할 것입니다.

> sessionInfo() 
R version 3.3.1 (2016-06-21) 
latform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows 7 x64 (build 7601) Service Pack 1 
+0

당신은 관리자 권한으로 실행하고 있습니까

hk <- jsonlite::fromJSON(rawToChar(hk_raw[-(1:6)])) 

그건 당신에게 데이터 구조를 제공한다 (및 처리 될 필요가있을 것이다)? – JARO

+0

URL에 특수 문자가있을 수 있습니다. 이 질문을 확인하십시오 https://stackoverflow.com/questions/42739594/r-jsonlite-fromjson-always-returns-error-in-open-connection – Barbara

+0

이 방화벽을 사용하려면 https : //를 참조하십시오. support.rstudio.com/hc/en-us/articles/200488488-Configuring-R-to-Use-an-HTTP- 또는 -HTTPS-Proxy – amrrs

답변

1

주요 오류는 다른 사람이 지적한 방화벽 문제 일 가능성이 큽니다. 당신은 우선 순위별로 할 httr를 사용할 수 있습니다 더 나은 :

library(httr) 
library(jsonlite) 

link <- "https://data.kcg.gov.tw/dataset/7999ac19-e7dc-496a-9b7d-bd8daec107bd/resource/19d06299-a80c-42c2-a9b8-63d4466161a0/download/priceshistory_20160101-20161231.json" 

연결, 여기, 나를 위해 일하지만 데이터 (나는이 대답을 게시 주된 이유입니다) 몇 가지 문제가 있습니다

kh <- jsonlite::fromJSON(json_url) 
## Error in parse_con(txt, bigint_as_char) : 
## lexical error: invalid char in json text. 
##          [ {  "result":{  " 
##      (right here) ------^ 
## In addition: Warning message: 
## JSON string contains (illegal) UTF8 byte-order-mark! 

그 오류는 BOM이 제거되지 않았다는 것을 의미합니다 (그 때해야합니다). 여기

당신이 조금 httr::GET()를 사용하여 연결 우선 순위별로 할 수있는 방법 :

httr::GET(
    link, 
    progress(), # it's a 13MB file on a slow connection for North America, so this helps 
    verbose() # this lets you see the connection info to make sure nothing is wrong 
) -> res 

나는 자세한 출력을 붙여 아니에요, 그래서 이것은 오류가 없었다,하지만 당신은 자세한 출력을보고 볼 수 어떤 HTTP 오류가 나타나는지. 프록시/방화벽 문제를 진단하는 데 도움이 될 수 있습니다. 최신 curlhttr 패키지를 사용하면 Windows OS와 함께 더 멋지게 사용할 수 있습니다.

돌아 가기 여전히 가능성이 당신을 위해 문제가 될 것입니다 BOM을 문제에

:

hk_raw <- httr::content(res, as="raw") 

hk_raw[1:10] 
## [1] ef bb bf ef bb bf 5b 0a 20 20 

가 UTF-8 BOM 순서가 2 배가 이유를 잘 모르겠어요,하지만 다루기 쉽다 완벽에 읽어 보시기 바랍니다.

+0

답해 주셔서 감사합니다.하지만 'GET (link) '함수에서 오류를 표시합니다. ** curl :: curl_fetch_memory (url, handle = handle)의 오류 : 서버 **에 연결할 수 없습니다. 방화벽으로 막혀 있습니까? – swchen

+0

제안대로'verbose()'로 실행 했습니까? 그렇다면, 그 진단 결과물은 무엇을 말했습니까? – hrbrmstr

+0

당신이 제안한'verbose()'를 시도했지만, 여전히 작동하지 않을 수 있습니다. [screenshot] (https://imgur.com/733lW9R) 여기에 오류가 표시됩니다. – swchen

관련 문제