RJSONIO exposes customization points for parser events,
string conversion, JavaScript variable output, and S4 serialization.
basicJSONHandler() returns an object with
update() and value() functions. The parser
calls update() for each JSON token.
handler <- basicJSONHandler()
fromJSON("[1, 3, 10, 19]", handler$update)
#> NULL
handler$value()
#> [[1]]
#> [1] 1
#>
#> [[2]]
#> [1] 3
#>
#> [[3]]
#> [1] 10
#>
#> [[4]]
#> [1] 19A callback can also collect token names directly.
Use stringFun to transform strings while parsing.
asJSVars() formats named values as JavaScript-style
assignments and returns the generated text invisibly.
Type annotations can be requested for common scalar values.
S4 objects are serialized by their slots unless a more specific method is defined.
setClass("RJSONIOVignetteClass",
representation(id = "integer", label = "character"))
object <- new("RJSONIOVignetteClass", id = 1L, label = "example")
cat(toJSON(object))
#> { "id": 1,"label": "example" }Packages can define class-specific toJSON() methods when
a different JSON shape is needed.
setClass("RJSONIOPoint", representation(x = "numeric", y = "numeric"))
setMethod("toJSON", "RJSONIOPoint",
function(x, container = TRUE, collapse = "\n", ...,
.level = 1L, .withNames = TRUE, .na = "null",
.escapeEscapes = TRUE, pretty = FALSE, asIs = NA,
.inf = " Infinity") {
toJSON(list(x = x@x, y = x@y),
container = container, collapse = collapse, ...,
.level = .level, .withNames = .withNames, .na = .na,
.escapeEscapes = .escapeEscapes, pretty = pretty,
asIs = asIs, .inf = .inf)
})
point <- new("RJSONIOPoint", x = 1, y = 2)
fromJSON(toJSON(point))
#> [1] 1 2