2017-11-28 29 views
0

Rを使用して.jsonファイルを読み取ることはできませんが、Webサイトで見ることができます。jsonliteをRで使用して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

あなたは管理者として実行していますか? – 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倍あり、なぜ私はわからないんだけど、それは対処するのは簡単です(とに対処する必要があります)

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

であなたに完全に読み込まれたデータ構造を与える必要があること。

+0

回答ありがとうございますが、私は 'GET(リンク) 'function、それはエラーを表示します:** curl :: curl_fetch_memory(url、handle = handle)のエラー:サーバ**に接続できませんでした。これはファイアウォールによってブロックされていることを意味しますか? – swchen

+0

'verbose()'を実行しましたか?もしそうなら、その診断出力は何を言いましたか? – hrbrmstr

+0

あなたが提案したように 'verbose()'を試しても、それでも動作できない場合は、[screenshot](https://imgur.com/733lW9R)ここにエラーが表示されます。 – swchen

関連する問題