如何读取嵌套JSON结构?

如何读取嵌套JSON结构?,json,r,plyr,rbind,Json,R,Plyr,Rbind,我有一些JSON看起来像这样: "total_rows":141,"offset":0,"rows":[ {"id":"1","key":"a","value":{"SP$Sale_Price":"240000","CONTRACTDATE$Contract_Date":"2006-10-26T05:00:00"}}, {"id":"2","key":"b","value":{"SP$Sale_Price":"2000000","CONTRACTDATE$Contract_Date":"2006

我有一些JSON看起来像这样:

"total_rows":141,"offset":0,"rows":[
{"id":"1","key":"a","value":{"SP$Sale_Price":"240000","CONTRACTDATE$Contract_Date":"2006-10-26T05:00:00"}},
{"id":"2","key":"b","value":{"SP$Sale_Price":"2000000","CONTRACTDATE$Contract_Date":"2006-08-22T05:00:00"}},
{"id":"3","key":"c","value":{"SP$Sale_Price":"780000","CONTRACTDATE$Contract_Date":"2007-01-18T06:00:00"}},
...
> class(r)
[1] "data.frame"
> colnames(r)
[1] "id"    "key"   "value"
在R中,生成
SP$Sale\u Price
CONTRACTDATE$Contract\u Date
散点图的最简单方法是什么

我走了这么远:

install.packages("rjson")
library("rjson")
json_file <- "http://localhost:5984/testdb/_design/sold/_view/sold?limit=100"
json_data <- fromJSON(file=json_file)
install.packages("plyr")
library(plyr)
asFrame <- do.call("rbind.fill", lapply(json_data, as.data.frame))

如何做到这一点?

假设您有以下JSON文件:

txt <- '{"total_rows":141,"offset":0,"rows":[
  {"id":"1","key":"a","value":{"SP$Sale_Price":"240000","CONTRACTDATE$Contract_Date":"2006-10-26T05:00:00"}},
  {"id":"2","key":"b","value":{"SP$Sale_Price":"2000000","CONTRACTDATE$Contract_Date":"2006-08-22T05:00:00"}},
  {"id":"3","key":"c","value":{"SP$Sale_Price":"780000","CONTRACTDATE$Contract_Date":"2007-01-18T06:00:00"}}]}'
现在您可以绘制:

plot(dat$contract_date, dat$sale_price)
其中:


如果选择不展平JSON,可以执行以下操作:

json_data <- fromJSON(txt)

dat <- json_data$rows$value

sp <- strtoi(dat$`SP$Sale_Price`)
cd <- strptime(dat$`CONTRACTDATE$Contract_Date`, format="%Y-%m-%dT%H:%M:%S", tz="GMT")
plot(cd,sp)

json_data我找到了一种不丢弃字段名的方法:

install.packages("jsonlite")
install.packages("curl")
json <- fromJSON(json_file)
r <- json$rows
经过更多的谷歌搜索和反复试验,我发现:

f <- r$value
sp <- strtoi(f[["SP$Sale_Price"]])
cd <- strptime(f[["CONTRACTDATE$Contract_Date"]], format="%Y-%m-%dT%H:%M:%S", tz="GMT")
plot(cd,sp)

f错误没有比未找到对象“CONTRACTDATE”更清楚的了
太好了,谢谢!我有点失望,扁平化丢弃了字段名。我的真实json数据中有700个属性。有没有办法保留属性名?@AlexR展开不会丢弃字段名。查看
json\u数据的结构。您将看到
值。
被添加到字段名的前面。设置
dat
名称的步骤不是必需的,因此是可选的。请参阅更新。
> class(r)
[1] "data.frame"
> colnames(r)
[1] "id"    "key"   "value"
f <- r$value
sp <- strtoi(f[["SP$Sale_Price"]])
cd <- strptime(f[["CONTRACTDATE$Contract_Date"]], format="%Y-%m-%dT%H:%M:%S", tz="GMT")
plot(cd,sp)