2017-01-30 67 views
0

我有一个JSON输入,我从服务器获取,我想将其解析为数据框对象。在R中解析多行JSON

结构:

体积紧凑

'{"total_rows":2,"offset":0,"rows":[{"id":"1","key":["1001"],"value":{"context":"1001","application_id":"1","cust_assets_total":1550000}},{"id":"2","key":["1001"],"value":{"context":"1001","application_id":"2","cust_assets_total":1550000}}]}' 

漂亮的表格

{ 
    "total_rows": 2, 
    "offset": 0, 
    "rows": [ 
    { 
     "id": "1", 
     "key": [ 
     "1001" 
     ], 
     "value": { 
     "context": "1001", 
     "application_id": "1", 
     "cust_assets_total": 1550000 
     } 
    }, 
    { 
     "id": "2", 
     "key": [ 
     "1001" 
     ], 
     "value": { 
     "context": "1001", 
     "application_id": "2", 
     "cust_assets_total": 1550000 
     } 
    } 
    ] 
} 

预期输出:

context application_id cust_assets_total 
1001 1    1550000 
1001 2    1550000 

代码中使用:

library(jsonlite) 

raw_data <- '{"total_rows":2,"offset":0,"rows":[{"id":"1","key":["1001"],"value":{"context":"1001","application_id":"1","cust_assets_total":1550000}},{"id":"2","key":["1001"],"value":{"context":"1001","application_id":"2","cust_assets_total":1550000}}]}' 

temp <-fromJSON(paste(readLines(raw_data),collapse="")) 

,但是这导致错误:

Error in file(con, "r") : cannot open the connection 
In addition: Warning message: 
In file(con, "r") : 
    cannot open file '{"total_rows":2,"offset":0,"rows":[{"id":"1","key":["1001"],"value":{"context":"1001","application_id":"1","cust_assets_total":1550000}},{"id":"2","key":["1001"],"value":{"context":"1001","application_id":"2","cust_assets_total":1550000}}]}': No such file or directory 
+0

如果'raw_data'已经在R中,为什么不只是'fromJSON(raw_data)'?至于错误,我相信你可能会丢失'textConnection',如'readLines(textConnection(raw_data))' – Jota

+0

raw_data将是使用Rcurl下载的,即raw_data < - getURL(url),将检查你的建议 –

回答

0

你可以readlines方法,如果你包裹textConnection围绕 “raw_data”,但它更容易离开它:

> temp <-fromJSON(raw_data) 
> temp 
$total_rows 
[1] 2 

$offset 
[1] 0 

$rows 
    id key value.context value.application_id value.cust_assets_total 
1 1 1001   1001     1     1550000 
2 2 1001   1001     2     1550000 

注意:...此版本的fromJSON为您提供了三元素的指定列表。

+0

感觉哑巴现在问这个问题,谢谢你的解决方案 –