При использовании jsonlite в R, как мне указать, что только некоторые записи должны рассматриваться как массивы? - PullRequest
0 голосов
/ 22 ноября 2018

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

# 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 Ответ

0 голосов
/ 22 ноября 2018

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

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

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

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