Converts R objects to JSON
Usage
to_json(
x,
unbox = FALSE,
digits = NULL,
numeric_dates = TRUE,
factors_as_string = TRUE,
by = "row"
)Arguments
- x
object to convert to JSON
- unbox
logical indicating if single-value arrays should be 'unboxed', that is, not contained inside an array.
- digits
integer specifying the number of decimal places to round numerics. Default is
NULL- no rounding- numeric_dates
logical indicating if dates should be treated as numerics. Defaults to TRUE for speed. If FALSE, the dates will be coerced to character in UTC time zone
- factors_as_string
logical indicating if factors should be treated as strings. Defaults to TRUE.
- by
either "row" or "column" indicating if data.frames and matrices should be processed row-wise or column-wise. Defaults to "row"
Examples
to_json(1:3)
#> [1,2,3]
to_json(letters[1:3])
#> ["a","b","c"]
## factors treated as strings
to_json(data.frame(x = 1:3, y = letters[1:3], stringsAsFactors = TRUE ))
#> [{"x":1,"y":"a"},{"x":2,"y":"b"},{"x":3,"y":"c"}]
to_json(data.frame(x = 1:3, y = letters[1:3], stringsAsFactors = FALSE ))
#> [{"x":1,"y":"a"},{"x":2,"y":"b"},{"x":3,"y":"c"}]
to_json(list(x = 1:3, y = list(z = letters[1:3])))
#> {"x":[1,2,3],"y":{"z":["a","b","c"]}}
to_json(seq(as.Date("2018-01-01"), as.Date("2018-01-05"), length.out = 5))
#> [17532,17533,17534,17535,17536]
to_json(seq(as.Date("2018-01-01"), as.Date("2018-01-05"), length.out = 5), numeric_dates = FALSE)
#> ["2018-01-01","2018-01-02","2018-01-03","2018-01-04","2018-01-05"]
psx <- seq(
as.POSIXct("2018-01-01", tz = "Australia/Melbourne"),
as.POSIXct("2018-02-01", tz = "Australia/Melbourne"),
length.out = 5
)
to_json(psx)
#> [1514725200,1515394800,1516064400,1516734000,1517403600]
to_json(psx, numeric_dates = FALSE)
#> ["2017-12-31T13:00:00","2018-01-08T07:00:00","2018-01-16T01:00:00","2018-01-23T19:00:00","2018-01-31T13:00:00"]
## unbox single-value arrays
to_json(list(x = 1), unbox = TRUE)
#> {"x":1.0}
to_json(list(x = 1, y = c("a"), z = list(x = 2, y = c("b"))), unbox = TRUE)
#> {"x":1.0,"y":"a","z":{"x":2.0,"y":"b"}}
## rounding numbers using the digits argument
to_json(1.23456789, digits = 2)
#> [1.23]
df <- data.frame(x = 1L:3L, y = rnorm(3), z = letters[1:3], stringsAsFactors = TRUE )
to_json(df, digits = 0 )
#> [{"x":1,"y":-1.0,"z":"a"},{"x":2,"y":-0.0,"z":"b"},{"x":3,"y":-1.0,"z":"c"}]
## keeping factors
to_json(df, digits = 2, factors_as_string = FALSE )
#> [{"x":1,"y":-0.94,"z":1},{"x":2,"y":-0.02,"z":2},{"x":3,"y":-0.83,"z":3}]