R list / dataframes to JSON массив объектов - PullRequest
1 голос
/ 01 мая 2020

Я пытаюсь создать массив JSON объектов, используя jsonlite в R. Цель - JSON, например:

{
  "top":[
    {
      "master1": {
      "item1": "value1"
      }
    },
    {
      "master2": {
      "item2": "value2"
      }
    }
  ]
}

Я пробовал список списков и фреймов данных со столбцом списка, но не может получить желаемый результат. Кроме того, преобразование вышеуказанного с fromJSON / в JSON приводит к другому формату:

library(jsonlite)
txt <- '{
  "top":[
    {
      "master1": {
      "item1": "value1"
      }
    },
    {
      "master2": {
      "item2": "value2"
      }
    }]
}'

toJSON(fromJSON(txt), pretty = T)

# Output
{
  "top": [
    {
      "master1": {
        "item1": "value1"
      },
      "master2": {}
    },
    {
      "master1": {},
      "master2": {
        "item2": "value2"
      }
    }
  ]
}

Нужно ли установить параметр, чтобы это работало?

1 Ответ

0 голосов
/ 01 мая 2020

По умолчанию вызов fromJSON преобразует ваш ввод в фрейм данных и, следовательно, добавляет NA значения, что приводит к пустым записям в вашем выводе JSON:

$top
   item1  item2
1 value1   <NA>
2   <NA> value2

You необходимо добавить simplifyDataFrame = FALSE к вызову fromJSON, чтобы предотвратить создание фрейма данных.

toJSON(fromJSON(txt, simplifyDataFrame = FALSE), pretty = T)

т

{
  "top": [
    {
      "master1": {
        "item1": ["value1"]
      }
    },
    {
      "master2": {
        "item2": ["value2"]
      }
    }
  ]
}
...