R - 解析具有多个级别的 JSON 代码

标签 r json jsonlite

我正在尝试使用 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 个变量的数据框。最后一个变量是一个包含所有“面糊”值的列表。

我想构建它以获得具有 4 个变量的 3 个观察值。

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

我可以在解析json代码时直接这样做吗?或者我是否需要使用 unlist 之类的东西来构建表格? (如果是这样,如何使用 unlist 之类的东西有效地完成此操作?)

最佳答案

通过进一步挖掘,我在 tidyr 中发现了 unnest

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

关于R - 解析具有多个级别的 JSON 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63239325/

相关文章:

json - 需要将 JSON 中的整数解析为整数,而不是 float

json - 如何使用 jsonlite R 包将长度为 1 的 R 向量编码为 json 中的单个值?

r - 使用 dplyr 分解不同年份的数据

r - 处理程序中的错误$add(处理程序,键,尾部): Key/already in use with Shiny

javascript - jqgrid 日期时间格式化

json - 使用CloudFormation在CloudFront中添加SSL证书时出现错误(需要指定)

r - R中cpp的编译错误

r - 如何更改排列Grob 上的标题(顶部)大小?

json - 如何使用 jsonlite 将在线 JSON 数据加载到 Shiny 的应用程序?

r - 以 R 格式导出 JSON 数据框