This function marks an atomic vector or data frame as a
singleton, i.e.
a set with exactly 1 element. Thereby, the value will not turn into an
array when encoded into JSON. This can only be done for
atomic vectors of length 1, or data frames with exactly 1 row. To automatically
unbox all vectors of length 1 within an object, use the auto_unbox argument
in toJSON().
unbox(x)Returns a singleton version of x.
It is usually recommended to avoid this function and stick with the default
encoding schema for the various R classes. The only use case for this function
is if you are bound to some specific predefined JSON structure (e.g. to
submit to an API), which has no natural R representation. Note that the default
encoding for data frames naturally results in a collection of key-value pairs,
without using unbox.
toJSON(list(foo=123))
#> {"foo":[123]}
toJSON(list(foo=unbox(123)))
#> {"foo":123}
# Auto unbox vectors of length one:
x = list(x=1:3, y = 4, z = "foo", k = NULL)
toJSON(x)
#> {"x":[1,2,3],"y":[4],"z":["foo"],"k":{}}
toJSON(x, auto_unbox = TRUE)
#> {"x":[1,2,3],"y":4,"z":"foo","k":{}}
x <- iris[1,]
toJSON(list(rec=x))
#> {"rec":[{"Sepal.Length":5.1,"Sepal.Width":3.5,"Petal.Length":1.4,"Petal.Width":0.2,"Species":"setosa"}]}
toJSON(list(rec=unbox(x)))
#> {"rec":{"Sepal.Length":5.1,"Sepal.Width":3.5,"Petal.Length":1.4,"Petal.Width":0.2,"Species":"setosa"}}