Creates a structure definition for a JSON object with named fields. Each field must be
defined using an s_* function (e.g., s_string(), s_integer(), or nested structures).
Arguments
- ...
Named field definitions. Each name corresponds to a key in the JSON object, and each value must be a structure created by an
s_*function. Calls_map()with no arguments to define an empty object.- .ignore_extra_fields
Logical (default
FALSE). IfTRUE, allows extra fields in the input JSON to be ignored instead of triggering a validation error.
Value
An intermediate structure definition used by build_structure().
Examples
# Simple object
s_map(name = s_string(), age = s_integer())
#> $type
#> [1] "map"
#>
#> $value
#> $value$name
#> $value$name$type
#> [1] "string"
#>
#>
#> $value$age
#> $value$age$type
#> [1] "integer"
#>
#>
#>
#> $ignore_extra_fields
#> [1] FALSE
#>
# Nested structure
s_map(
user = s_string(),
details = s_map(email = s_string(), active = s_logical()),
tags = s_vector(s_string())
)
#> $type
#> [1] "map"
#>
#> $value
#> $value$user
#> $value$user$type
#> [1] "string"
#>
#>
#> $value$details
#> $value$details$type
#> [1] "map"
#>
#> $value$details$value
#> $value$details$value$email
#> $value$details$value$email$type
#> [1] "string"
#>
#>
#> $value$details$value$active
#> $value$details$value$active$type
#> [1] "logical"
#>
#>
#>
#> $value$details$ignore_extra_fields
#> [1] FALSE
#>
#>
#> $value$tags
#> $value$tags$type
#> [1] "vector"
#>
#> $value$tags$value
#> $value$tags$value$type
#> [1] "string"
#>
#>
#>
#>
#> $ignore_extra_fields
#> [1] FALSE
#>
# Ignore extra JSON fields
s_map(id = s_integer(), .ignore_extra_fields = TRUE)
#> $type
#> [1] "map"
#>
#> $value
#> $value$id
#> $value$id$type
#> [1] "integer"
#>
#>
#>
#> $ignore_extra_fields
#> [1] TRUE
#>