R - 解析多层级的JSON代码

3

我正在尝试使用R解析JSON。在jsonlite包中使用fromJSON()函数可以帮助我实现大部分功能。但是,当JSON具有多个级别时,建立数据框的最有效方法是什么?

假设我有以下JSON代码:

[
   {
      "id":"0001",
      "type":"donut",
      "batters":{
         "batter":[
            {
               "id":"1001",
               "type":"Regular"
            },
            {
               "id":"1002",
               "type":"Chocolate"
            },
            {
               "id":"1003",
               "type":"Blueberry"
            }
         ]
      }
   }
]

我使用fromJSON将其读入并解析。

json <- readLines(...)
out <- fromJSON(json)

这将给我一个包含1个观察值和3个变量的数据框。最后一个变量是一个列表,其中包含所有的“batter”值。

我想扩展它以获得3个观察值和4个变量。

id     type     batter.id     batter.type
0001   donut    1001          Regular
0001   donut    1002          Chocolate
0001   donut    1003          Blueberry

我需要直接解析JSON代码来完成这个任务吗?或者我需要使用类似于“unlist”的东西来构建表格? (如果是这样,如何使用类似于“unlist”的方法高效地完成?)

1
你已经更加清晰地排序了它,但是你可以以稍微绕一点的方式使用 unlist - 例如 data.frame(lapply(fromJSON(txt, flatten=TRUE), unlist, rec=FALSE)) - thelatemail
1个回答

2

通过进一步的搜索,我在tidyr中找到了unnest

unnest(out, batter, names_sep = ".")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接