The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
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[@]dogado.de.
This vignette:
opts
argument for writing JSON with the
write_json_X()
family of functions.opts_write_json()
opts
argument - Specifying options when reading
JSONAll write_json_x()
functions have an opts
argument. opts
takes a named list of options used to
configure the way yyjsonr
writes JSON from R objects.
The default argument for opts
is an empty list, which
internally sets the default options for writing.
The default options for writing JSON can also be viewed by running
opts_write_json()
.
The following three function calls are all equivalent ways of calling
write_json_str()
using the default options:
Setting a single option (and keeping all other options at their default value) can be done in a number of ways.
The following three function calls are all equivalent:
digits
- Number of decimal places for numeric
valuesThe digits
option controls the number of decimal places
output for numeric values. The default value of digits = -1
indicates that the internal yyjson
C library formatting
should be used.
#> [1] "[1.0,1.23,3.141592654]"
#> [1] "[1.0,1.23,3.14]"
#> [1] "[1,1,3]"
pretty
- Use whitespace to make the JSON
prettyThe pretty
option is a logical value indicating whether
or not whitespace should be used to make the resulting JSON more
readable.
#> [{"Sepal.Length":5.1,"Sepal.Width":3.5,"Petal.Length":1.4,"Petal.Width":0.2,"Species":"setosa"},{"Sepal.Length":4.9,"Sepal.Width":3.0,"Petal.Length":1.4,"Petal.Width":0.2,"Species":"setosa"}]
#> [
#> {
#> "Sepal.Length": 5.1,
#> "Sepal.Width": 3.5,
#> "Petal.Length": 1.4,
#> "Petal.Width": 0.2,
#> "Species": "setosa"
#> },
#> {
#> "Sepal.Length": 4.9,
#> "Sepal.Width": 3.0,
#> "Petal.Length": 1.4,
#> "Petal.Width": 0.2,
#> "Species": "setosa"
#> }
#> ]
auto_unbox
- Handling for R vectors of length
1The auto_unbox
option is a logical value indicating
whether single values should be written as JSON scalars or JSON arrays
(with length 1).
When auto_unbox = FALSE
(the default), single values are
always written as a JSON array i.e. within []
brackets.
When auto_unbox = TRUE
, single values are written as
bare JSON scalar values
#> [[1.0],[1.0,2.0],[null]]
#> [1.0,[1.0,2.0],null]
dataframe
- Orientation of data.frame
outputThe dataframe
option controls the orientation of the
data output to JSON:
dataframe = "rows"
(the default) writes the data
one-row-at-a-time as a JSON []
array containing a JSON
{}
object for each row.dataframe = "cols"
writes the data one-column-at-a-time
as a JSON {}
object containing JSON []
arrays.#> [
#> {
#> "Sepal.Length": 5.1,
#> "Sepal.Width": 3.5,
#> "Petal.Length": 1.4,
#> "Petal.Width": 0.2,
#> "Species": "setosa"
#> },
#> {
#> "Sepal.Length": 4.9,
#> "Sepal.Width": 3.0,
#> "Petal.Length": 1.4,
#> "Petal.Width": 0.2,
#> "Species": "setosa"
#> },
#> {
#> "Sepal.Length": 4.7,
#> "Sepal.Width": 3.2,
#> "Petal.Length": 1.3,
#> "Petal.Width": 0.2,
#> "Species": "setosa"
#> }
#> ]
#> {
#> "Sepal.Length": [
#> 5.1,
#> 4.9,
#> 4.7
#> ],
#> "Sepal.Width": [
#> 3.5,
#> 3.0,
#> 3.2
#> ],
#> "Petal.Length": [
#> 1.4,
#> 1.4,
#> 1.3
#> ],
#> "Petal.Width": [
#> 0.2,
#> 0.2,
#> 0.2
#> ],
#> "Species": [
#> "setosa",
#> "setosa",
#> "setosa"
#> ]
#> }
factor
- factor representationThe factor
option indicates whether factors should be
output as string
(the default) or integer
values.
#> ["versicolor","virginica","setosa","setosa","versicolor","versicolor","setosa","virginica","versicolor","setosa"]
#> [2,3,1,1,2,2,1,3,2,1]
name_repair
- Dealing with missing names in
listsWhen writing R lists which are only partially named,
name_repair
controls the names which are generated for the
JSON output.
name_repair = "none"
(the default) means that no names
are created, and an empty string will be used as the key.name_repair = "minimal"
will generate default names for
each unnamed list item based upon its position in the list.#> {
#> "a": [
#> 1.0
#> ],
#> "b": [
#> 2.0
#> ],
#> "": [
#> 67.0
#> ]
#> }
#> {
#> "a": [
#> 1.0
#> ],
#> "b": [
#> 2.0
#> ],
#> "3": [
#> 67.0
#> ]
#> }
num_specials
- Writing numeric NA
,
NaN
and Inf
JSON only has a single null
value as a representation of
missing-ness or special-ness of a value. That is, it has no natural
representations to distinguish the special R numeric values like
NA
, NaN
and Inf
.
The num_specials
option configures handling of these
values in the JSON output:
num_specials = "null"
(the default) will write special
numeric values as JSON null
values.num_specials = "string"
will write string
representations of these values.#> [1.23,null,null,null,null]
#> [1.23,"NA","NaN","Inf","-Inf"]
str_specials
- Writing character
NA
JSON only has a single null
value as a representation of
missing-ness or special-ness of a value. That is, it has no specific
representation of NA_character_
.
The str_specials
option configures handling of
NA_character_
values in the JSON output:
str_specials = "null"
(the default) will write
NA_character_
as JSON null
.str_specials = "string"
will write
NA_character_
as "NA"
.#> ["hello",null]
#> ["hello","NA"]
yyjson_write_flag
- internal YYJSON
C library optionsThe yyjson
C library supports a number of internal
options for writing JSON.
These options are considered advanced, and the user is referred to
the yyjson
documentation for further explanation on what they control.
Warning: some of these advanced options do not make sense for interfacing with R, or otherwise conflict with how this package converts R objects to JSON.
#> $YYJSON_WRITE_NOFLAG
#> [1] 0
#>
#> $YYJSON_WRITE_PRETTY
#> [1] 1
#>
#> $YYJSON_WRITE_ESCAPE_UNICODE
#> [1] 2
#>
#> $YYJSON_WRITE_ESCAPE_SLASHES
#> [1] 4
#>
#> $YYJSON_WRITE_ALLOW_INF_AND_NAN
#> [1] 8
#>
#> $YYJSON_WRITE_INF_AND_NAN_AS_NULL
#> [1] 16
#>
#> $YYJSON_WRITE_ALLOW_INVALID_UNICODE
#> [1] 32
#>
#> $YYJSON_WRITE_PRETTY_TWO_SPACES
#> [1] 64
#>
#> $YYJSON_WRITE_NEWLINE_AT_END
#> [1] 128
write_json_str(
c('hello / there', '#RStats'),
opts = opts_write_json(yyjson_write_flag = c(
yyjson_write_flag$YYJSON_WRITE_ESCAPE_SLASHES
))
) |> cat()
#> ["hello \/ there","#RStats"]
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.
Health stats visible at Monitor.