При использовании jsonlite в R, как мне указать, что только некоторые записи должны рассматриваться как массивы?

У меня есть следующий код:

# install.packages("jsonlite")
require("jsonlite")
x = list(
    test = "my_test",
    data = c(1, 2, 3)
)
toJSON(x)

Это печатает:

{"test":["my_test"],"data":[1,2,3]} 

Я ожидал:

{"test":"my_test","data":[1,2,3]}

Я попытался использовать некоторые параметры из документации, но, похоже, не могу сделать это правильно.

1 ответ

Аргумент auto_unbox=TRUE сделал трюк:

автоматически распаковывать все атомарные векторы длины 1. Обычно безопаснее избежать этого и вместо этого использовать функцию unbox, чтобы распаковать отдельные элементы. Исключением является то, что объекты класса AsIs (т.е. обернутые в I()) не распаковываются автоматически. Это способ пометить отдельные значения как массивы длины-1.

То есть решение было toJSON(x, auto_unbox=TRUE), который возвращает то, что я ожидал:

{"test":"my_test","data":[1,2,3]}
Другие вопросы по тегам