更改管道工 api

问题描述

我在 R 中有一个数据框,我想以特定格式将其序列化为 json。示例代码

df_t<-data.frame(c(453:458),c(1:6),row.names = NULL)
colnames(df_t) <- c("area","price")
jsonlite::toJSON(df_t)

以上代码输出格式如下:

[{"area":453,"price":1},{"area":454,"price":2},{"area":455,"price":3},{"area" :456,"price":4},{"area":457,"price":5},{"area":458,"price":6}]

但我想要的格式是:

{"area":[453,454,455,456,457,458],"price":[1,2,3,4,5,6]}

为了获得我需要的格式,我编写了这段代码,它为我提供了与我期望的类似但用引号括起来的输出

paste0( '{',colnames(df_t)[1],':',jsonlite::toJSON(df_t[,1]),',colnames(df_t)[2],2]),'}')

“{面积:[453,价格:[1,6]}”

我的问题是有没有更好的方法来获得我想要的格式?数据帧是从 R 管道工 api 返回的,因此认使用 jsonlite 序列化程序。

解决方法

jsonjsonlite 包更适合 list 格式。 可能是更改默认序列化比简单地将 R 数据结构转换为匹配的工作量更大。

我会建议一些类似

df_t<-data.frame(c(453:458),c(1:6),row.names = NULL)
colnames(df_t) <- c("area","price")

df_t_list <- list()
for(i in 1:ncol(df_t)) {
  df_t_list[[i]] <- df_t[,i]
}
names(df_t_list) <- c("area","price")

jsonlite::toJSON(df_t_list)   

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...