在 plumber api 中更改 R 数据帧的 json 序列化格式
change the format of json serialization for R dataframe in plumber 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], ':', jsonlite::toJSON(df_t[,2]), '}')
"{area:[453,454,455,456,457,458],price:[1,2,3,4,5,6]}"
我的问题是有没有更好的方法来获得我想要的格式?数据帧是从 R 管道工 api 返回的,因此默认使用 jsonlite 序列化程序。
json
和 jsonlite
包更适合 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)
我在 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], ':', jsonlite::toJSON(df_t[,2]), '}')
"{area:[453,454,455,456,457,458],price:[1,2,3,4,5,6]}"
我的问题是有没有更好的方法来获得我想要的格式?数据帧是从 R 管道工 api 返回的,因此默认使用 jsonlite 序列化程序。
json
和 jsonlite
包更适合 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)