将JSON数据转换为具有奇怪格式的R数据框架

时间:2016-12-05 04:02:15

标签: json r

我正在尝试将此JSON导入R中的数据框。数据的网址为http://mooshe.pw/files/items_rs3.json

这是我的代码:

doctype html

但是,尝试运行此命令时出现以下错误消息:

library(jsonlite)

item.codes <- fromJSON('http://mooshe.pw/files/items_rs3.json')

因此,某些数据中的值中包含引号,这意味着R很难解析JSON并将其作为数据帧。我怎么能绕过这个?

2 个答案:

答案 0 :(得分:2)

同样,您需要修复它是无效的JSON。这是一种方法:

library(magrittr)
library(stringi)
library(jsonlite)

readLines("http://mooshe.pw/files/items_rs3.json") %>% 
  stri_replace_all_regex('(")([[:alnum:][:blank:]]+)("")', "'$2'\"") %>% 
  fromJSON()

答案 1 :(得分:2)

RJSONIO::fromJSON对不规则语法更加宽容,并会为您提供一个列表,您可以将其汇总到purrr列表中:

library(purrr)

l <- RJSONIO::fromJSON('http://mooshe.pw/files/items_rs3.json')

df <- l %>% transpose() %>% map_df(simplify)

df
## # A tibble: 23,972 × 6
##                  name members tradeable cosmetic modelid  value
##                 <chr>   <lgl>     <lgl>    <lgl>   <dbl>  <dbl>
## 1       Dwarf remains    TRUE     FALSE    FALSE    2595     -1
## 2             Toolkit    TRUE     FALSE    FALSE    2679     -1
## 3          Cannonball    TRUE      TRUE    FALSE    2413      5
## 4    Nulodion's notes    TRUE     FALSE    FALSE    2794     -1
## 5          Ammo mould    TRUE     FALSE    FALSE    2706      5
## 6  Instruction manual    TRUE     FALSE    FALSE    2794     10
## 7         Cannon base    TRUE      TRUE    FALSE   63866 187500
## 8        Cannon stand    TRUE      TRUE    FALSE   63876 187500
## 9      Cannon barrels    TRUE      TRUE    FALSE   63868 187500
## 10     Cannon furnace    TRUE      TRUE    FALSE   63870 187500
## # ... with 23,962 more rows