更改结构数据以写入 JSON

问题描述

嗨,我想更改我写入 JSON 的数据结构,但我不确定如何。

这是我的代码:

test_df <- data.frame(Metric = c("test1","test2","test3","test4","test5"),Value = c(tail(test1$v,1),tail(test2$v,tail(test3$v,tail(test4$v,tail(test5$v,1)))
                                              


test_df_list <- list(test_df)

names(test_df_list) <- "test_df_df"

test_df_exportJSON <- toJSON(test_df_list,pretty = TRUE)

write(test_df_exportJSON,"test_df.json") 

结果:

{
  "test_df": [
    {
      "Metric": "test1","Value": 47
    },{
      "Metric": "test2","Value": 0.85
    },{
      "Metric": "test3","Value": 0.98
    },{
      "Metric": "test4","Value": 137
    },{
      "Metric": "test5","Value": 2.1
    }
  ]
}

但我想删除 [] 像:

{
  "test_df": 
    {
      "test1": 47,"test2": 0.85,"test3": 0.98,"test4": 137,"test5": 2.1
    }
}

知道怎么做吗?任何帮助都会很棒!

不知何故,我收到消息“看起来您的帖子主要是代码;请添加更多详细信息”,因此请忽略此行以使其接受;)

解决方法

您可以在创建列表时删除 Metric,稍后将其作为名称添加到列表元素中。还将 Value 拆分为单个列表项。由于我手头没有您的 test1 数据,我在下面创建了一个示例。

library(jsonlite)
test_df <- data.frame(Metric = c('test1','test2','test3','test4','test5'),Value = c(4,6,2,8,7))

names <- as.vector(test_df$Metric)

test_df_list <- structure(split(test_df$Value,seq(nrow(test_df))),names = names)

test_df_list <- list(test_df = test_df_list)

toJSON(test_df_list,pretty = TRUE,auto_unbox = TRUE)

会给

{
  "test_df": {
    "test1": 4,"test2": 6,"test3": 2,"test4": 8,"test5": 7
  }
} 

如果 remove auto_unbox = TRUE 来自 toJSON(),则值将在方括号中 [ ].
这对我有用,但也许有人想出了更方便的解决方案。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...