我试图解析API的一些结果。 API返回给定值的JSON结果。 API一次只能处理一个值,因此我lapply
可以获得所有结果。 < - 如果这是一个不好的开始点,那么这里有更好的方式!
每个JSON响应都有一些嵌套信息。我试图将数据放入一个单独的data.frame中,并解析嵌套结构。
在下午的大部分时间里,我一直在玩jsonlite和purrr,试图让这个工作变得更有效率。
如何使用R成功将嵌套的json结构转换为多个json文档/记录的data.frame?
library(jsonlite)
a <- LETTERS[1:5]
b <- letters[1:5]
c <- rep(data.frame(d=LETTERS[1:5]),5)
strSetup <- list(a, b, c)
dfSetup <- data.frame(a, b, c)
jsonStr <- toJSON(rep(strSetup,3))
finalStr <- rbind(dfSetup,dfSetup,dfSetup)
我试图从jsonStr
转到finalStr
。
答案 0 :(得分:0)
如果我理解正确,您将API返回的所有JSON字符串存储到字符向量中。这意味着你的例子的第9行有点关闭,这应该有用。
library(jsonlite)
a <- LETTERS[1:5]
b <- letters[1:5]
c <- rep(data.frame(d=LETTERS[1:5]),5)
strSetup <- list(a, b, c)
dfSetup <- data.frame(a, b, c)
jsonStr <- rep(toJSON(strSetup),3)
finalStr <- rbind(dfSetup,dfSetup,dfSetup)
finalStr2 <- do.call(
what = rbind,
args = lapply(
X = jsonStr,
FUN = function(x){
data.frame(fromJSON(x))
}
)
)
print(all(finalStr == finalStr2))
需要注意的是names(finalStr) != names(finalStr2)
。但是,我不认为这是可以避免的,因为您表示您从API收到的JSON字符串不包含名称。
如果我误解了,请告诉我。