如何将 json 转换为 tibble

how to convert json to tibble

我有以下json数据

{"data": {"cat1": ["value1", "value2", "value3", "value4", "value5"], "cat2": ["aaa", "bbb", "ccc"]},"info": ""}

我想把数据转换成下面这样。我怎样才能使用函数“fromJSON”

var1 var2 var3
data cat1 value1
data cat1 value2
data cat1 value3
data cat1 value4
data cat1 value5
data cat2 aaa
data cat2 bbb
data cat2 ccc
info

以下是使用 jsonlite 包解决您的问题的基于 tidyverse 的解决方案。在读取 .JSON 文件时,分解 fromJSON 创建的列表结构非常容易。剩下的就是 tidyverse 功能的应用。请注意,Test.json 文件包含与您提供的数据完全相同的数据。

代码

cols = c("var1", "var2", "var3")
A <- fromJSON("Test.json")
B <- A %>% 
      unique %>% 
        unlist %>% 
           as.data.frame %>% 
           tibble::rownames_to_column() %>% 
              mutate(rowname = substr(rowname, 1, nchar(rowname) - 1), 
               var1 = c(rep(names(A)[1], length(rowname) - 1), names(A)[2])) %>% 
                 rename(!!cols[1] := var1, !!cols[2] := rowname, !!cols[3] := .) %>% 
                    select(var1, var2, var3) 

输出

  var1 var2   var3
1 data cat1 value1
2 data cat1 value2
3 data cat1 value3
4 data cat1 value4
5 data cat1 value5
6 data cat2    aaa
7 data cat2    bbb
8 data cat2    ccc
9 info