--- title: "RJSONIO" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{RJSONIO} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ```{r setup} library(RJSONIO) ``` `RJSONIO` converts data between R objects and JSON text. The main entry points are `fromJSON()` for parsing JSON and `toJSON()` for serializing R objects. ## Basic parsing Use `fromJSON()` with JSON text, a file path, or a connection. ```{r parse-basic} fromJSON('{"name": "RJSONIO", "active": true, "values": [1, 2, 3]}') ``` Character input that starts with `{` or `[` is treated as JSON content. A plain file path is read from disk. ```{r parse-file} path <- system.file("sampleData", "keys.json", package = "RJSONIO") names(fromJSON(path)) ``` ## Basic serialization Use `toJSON()` to serialize common R objects. ```{r write-basic} value <- list( id = 1, name = "RJSONIO", values = c(1, 2, 3), active = TRUE ) json <- toJSON(value, pretty = TRUE) cat(json) ``` The result can be parsed back into R. ```{r roundtrip-basic} fromJSON(json) ``` ## Validation `isValidJSON()` checks whether JSON text can be parsed. ```{r validate-basic} candidate <- toJSON(list(name = "RJSONIO", version = "2.0.3")) isValidJSON(I(candidate)) isValidJSON(I("{not valid json}")) ``` ## Round trips Round trips are most direct for simple vectors and lists whose JSON representation maps cleanly back to base R types. ```{r roundtrip} value <- list(a = 1, b = c(TRUE, FALSE), c = c("x", "y")) parsed <- fromJSON(toJSON(value)) identical(parsed, value) parsed ```