#r #json #brackets #dataformat
#r #json #скобки #формат данных
Вопрос:
Привет, я хотел бы изменить структуру данных, которые я записываю в JSON, но я не уверен, как это сделать.
это мой код:
test_df <- data.frame(Metric = c("test1",
"test2",
"test3",
"test4",
"test5"),
Value = c(tail(test1$v, 1),
tail(test2$v, 1),
tail(test3$v, 1),
tail(test4$v, 1),
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
}
}
Есть идеи, как это сделать? Любая помощь была бы отличной!
Каким-то образом я получаю сообщение «Похоже, что ваш пост в основном состоит из кода; пожалуйста, добавьте еще несколько деталей», поэтому игнорируйте эту строку, чтобы она была принята 😉
Ответ №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. Да! Работает! Спасибо!
2. @H.berg Приятно знать, что это сработало! Способ
jsonlite
преобразования или другие пакеты всегда будут зависеть от структуры вашего фрейма данных или списка. Однако иногда бывает сложно найти правильную структуру.