The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

Writing JSON

library(RJSONIO)

toJSON() serializes R objects to JSON text. It has methods for common base R types and can be extended with S4 methods.

Atomic vectors

toJSON(c(1, 2, 3))
#> [1] "[        1,        2,        3 ]"
toJSON(c(TRUE, FALSE))
#> [1] "[ true, false ]"
toJSON(c("abc", "xyz"))
#> [1] "[ \"abc\", \"xyz\" ]"

Named atomic vectors are written as JSON objects.

toJSON(c(a = 1, b = 2))
#> [1] "{\n \"a\":        1,\n\"b\":        2 \n}"
fromJSON(toJSON(c(a = 1, b = 2)))
#> a b 
#> 1 2

Lists and nested values

Lists can represent nested JSON objects and arrays.

value <- list(
  name = "example",
  flags = c(TRUE, FALSE),
  nested = list(x = 1, y = "two")
)

cat(toJSON(value, pretty = TRUE))
#> {
#>  "name" : "example",
#>  "flags" : [
#>      true,
#>      false
#>  ],
#>  "nested" : {
#>      "x" : 1,
#>      "y" : "two"
#>  }
#> }

Data frames

By default, data frames are serialized by column. Use byrow = TRUE to write a row-oriented array.

data <- data.frame(id = 1:2, label = c("a", "b"))

cat(toJSON(data, pretty = TRUE))
#> {
#>  "id" : [
#>      1,
#>      2
#>  ],
#>  "label" : [
#>      "a",
#>      "b"
#>  ]
#> }
cat(toJSON(data, byrow = TRUE, colNames = TRUE, pretty = TRUE))
#> [
#>  {
#>      "id" : 1,
#>      "label" : "a"
#>  },
#>  {
#>      "id" : 2,
#>      "label" : "b"
#>  }
#> ]

Matrices and arrays

mat <- matrix(1:4, nrow = 2)
cat(toJSON(mat))
#> [ [ 1, 3 ],
#> [ 2, 4 ] ]

arr <- array(1:8, dim = c(2, 2, 2))
isValidJSON(I(toJSON(arr)))
#> [1] TRUE

Missing and empty values

Missing values are written as JSON null by default. Empty unnamed lists are written as arrays, while emptyNamedList is written as an object.

toJSON(c("a", NA, "b"))
#> [1] "[ \"a\", null, \"b\" ]"
fromJSON(toJSON(c("a", NA, "b")), nullValue = NA, simplify = TRUE)
#> [1] "a" NA  "b"

toJSON(list())
#> [1] "[]"
toJSON(emptyNamedList)
#> [1] "{}"

Numeric formatting

The digits argument controls numeric formatting.

toJSON(c(pi, exp(1)), digits = 4)
#> [1] "[ 3.142, 2.718 ]"
toJSON(c(pi, exp(1)), digits = 8)
#> [1] "[ 3.1415927, 2.7182818 ]"

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.