Первый раз постер, долгое время lurker. Быть нежным. Умеренный пользователь R. Я уверен, что есть лучший, функциональный способ сделать то, что мне нужно, но почувствовал, что я исследовал смерть, не понимая.Как объединить данные в ранее существовавшую структуру JSON в R?
Я пытаюсь объединить набор данных с уже существующей структурой JSON. Где одна строка записей на структуру JSON для многих последовательных запросов JSON.
я загрузить набор данных к данным, 13 переменных и изменить заголовки столбцов, чтобы соответствовать, как они появляются в структуре JSON
library(jsonlite)
#### Map Column headers to their respective names in the JSON Structure
colnames(data) <- c("default.A",
"default.B",
"default.C",
"items.A",
"items.B.1",
"items.B.2",
"items.B.3",
"items.B.4",
)
Создание пустой JSON структуры. Это формат, для которого необходимо обрабатывать запросы JSON. Простая вложенная структура.
sample <- '{
"default": {
"A": "",
"B": "",
"C": "",
},
"items": [{
"A": "",
"B": {
"1": "",
"2": "",
"3": "",
"4": "",
}
}]
}'
jsonstructure <- fromJSON(sample)
установить все как DF. объединить их. Заполните Nas холостыми
x <- as.data.frame(data)
y <- as.data.frame(jsonstructure)
Z <- merge(x, y, all = TRUE)
Z[is.na(Z)] <- ""
Преобразование в формат JSON
jsonZ <- toJSON(unname(split(Z, 1:nrow(Z))), pretty=TRUE)
cat(jsonZ)
Выходной ток, который не соответствует
[
[
{
"default.A": "",
"default.B": "1234567890",
"default.C": "",
"items.A": "1234567890",
"items.B.1": "1234",
"items.B.2": "1234",
"items.B.3": "1234",
"items.B.4": "1234",
}
],
[
{
"default.A": "",
"default.B": "0987654321",
"default.C": "",
"items.A": "0987654321",
"items.B.1": "4321",
"items.B.2": "4321",
"items.B.3": "4321",
"items.B.4": "4321",
}
]
]
BTW: Я не выполнял обработку 'NA', но, я думаю, вы можете понять это сами. ;) – cryo111
Я экспериментировал с этим, но сталкивался с некоторыми проблемами. При запуске вашей петли я получаю: 'Ошибка в 1: nrow (данные): аргумент длины 0' Я могу запустить ваш код как скопированный непосредственно из вашего сообщения. Наконец, глядя на конечный результат (и воспроизводимый с моего конца также), я вижу, что по какой-то причине данные, которые переполнены структурой JSON, иногда имеют кавычки вокруг значений NA, а не для остальных значений. – p0wd3rd
ad error) Вы не указали 'data', но я предполагал, что это' data.frame', где каждая строка должна быть преобразована в объект 'JSON'. Если это так, эта ошибка, о которой вы сообщаете, не должна отображаться. Объявления не совпадают с «NA»). Я не знаю, как форматируется ваш фактический ввод, но вы можете приблизиться к тому, что хотите, с помощью 'jsonstructure [[mapping [[i]]] <- ifelse (is.na (data_row [, cn [i]]), "", as.character (data_row [, cn [i]])) ' – cryo111