  A naive realization of JSON data in R maps JSON arrays to an unnamed list,
and JSON objects to a named list. However, in practice a list is an awkward,
inefficient type to store and manipulate data. Most statistical applications
work with (homogeneous) vectors, matrices or data frames. Therefore JSON
packages in R typically define certain special cases of JSON structures which
map to simpler R types. Currently there exist no formal guidelines, or even
consensus between implementations on how R data should be represented in JSON.
Furthermore, upon closer inspection, even the most basic data structures in R
actually do not perfectly map to their JSON counterparts and leave some
ambiguity for edge cases. These problems have resulted in different behavior
between implementations and can lead to unexpected output. This paper
explicitly describes a mapping between R classes and JSON data, highlights
potential problems, and proposes conventions that generalize the mapping to
cover all common structures. We emphasize the importance of type consistency
when using JSON to exchange dynamic data, and illustrate using examples and
anecdotes. The jsonlite R package is used throughout the paper as a reference
implementation.
