fromJSON() parses JSON arrays, objects, strings,
numbers, booleans, and nulls. The return type depends on the JSON shape
and the simplification settings.
Parse JSON text
fromJSON("[1, 3, 10, 19]")
#> [1] 1 3 10 19
fromJSON('{"a": 1, "b": true, "c": "value"}')
#> $a
#> [1] 1
#>
#> $b
#> [1] TRUE
#>
#> $c
#> [1] "value"Use I() when passing JSON text that should be treated
explicitly as content.
Parse files
File paths are read from disk when asText = FALSE, which
is the default for plain character strings that do not look like JSON
content.
path <- system.file("sampleData", "keys.json", package = "RJSONIO")
parsed <- fromJSON(path)
names(parsed)
#> [1] "menu"
names(parsed$menu)
#> [1] "header" "items"Parse connections
Connections are useful when JSON content is already available through an R connection object.
con <- textConnection(c("[[1, 2, 3, 4],", "[5, 6, 7, 8]]"))
parsed <- fromJSON(con)
close(con)
parsed
#> [[1]]
#> [1] 1 2 3 4
#>
#> [[2]]
#> [1] 5 6 7 8Null values
By default, JSON null maps to NULL in list
output. Use nullValue to preserve positions in simplified
vectors.
Simplification
Strict simplification keeps incompatible values as
lists. Less strict simplification can coerce mixed compatible values
into an atomic vector.
fromJSON('[1, "2.3", "abc"]', simplify = Strict)
#> [[1]]
#> [1] 1
#>
#> [[2]]
#> [1] "2.3"
#>
#> [[3]]
#> [1] "abc"
fromJSON('[1, "2.3", "abc"]', simplify = TRUE)
#> [1] "1.000000" "2.3" "abc"
fromJSON('{"a": 1, "b": 2}', simplify = Strict)
#> a b
#> 1 2
fromJSON('{"a": 1, "b": 2}', simplify = FALSE)
#> $a
#> [1] 1
#>
#> $b
#> [1] 2Sample data
The package includes JSON fixtures that are useful for examples and local checks.
sample_dir <- system.file("sampleData", package = "RJSONIO")
head(list.files(sample_dir, pattern = "[.]json$"))
#> [1] "array.json" "array2.json" "array3.json" "embedded.json"
#> [5] "glossay.json" "int.json"
widget <- fromJSON(file.path(sample_dir, "widget.json"))
names(widget)
#> [1] "widget"