# RJSONIO 2.0.5 (CRAN)

Serialize R Objects to JSON

[Record of 2.0.5](/cran/RJSONIO/v/2.0.5.md) | Compare: [With 2.0.0](/cran/RJSONIO/compare/2.0.0...2.0.5.md), [With another package](/compare/RJSONIO.md#add), [Downloads](/downloads/compare/RJSONIO.md#add) | [Licences](/cran/RJSONIO/licences.md) | [SBOM](/cran/RJSONIO/sbom.md)

Install from CRAN: `install.packages("RJSONIO")`

Also from:

- r2u (Ubuntu binaries): `sudo apt install r-cran-rjsonio` _Listed from recorded download activity on this channel, not from a live index, so read it as last known. Bioconductor packages are named r-bioc-<name> there._
- Fedora COPR (iucar/cran): `sudo dnf install R-CRAN-RJSONIO` _A rebuild of what CRAN lists, so it can lag CRAN by a rebuild._
- autoCRAN (openSUSE): `sudo zypper install R-RJSONIO` _Listed from recorded download activity on this channel, not from a live index, so read it as last known._
- conda-forge: `conda install -c conda-forge r-rjsonio` _Listed from recorded download activity on this channel, not from a live index, so read it as last known._

- CRAN checks: All OK (13 platforms)
- CRAN 30-day downloads: 16,097 (down 3.4% on the 30 days before, the worse direction)
- Dependent packages: 23 (4 more suggest it)
- Test coverage: 42% (of lines run by tests)
- Advisories: None known

## About

[Method](/about/licenses.md)

Converts R objects to and from JavaScript Object Notation (JSON). The package provides a stable interface for reading JSON from strings, files, and connections, and for serializing common R objects, including vectors, lists, data frames, arrays, environments, and S4 objects.

**Full description**

Converts R objects to and from JavaScript Object Notation (JSON). The package provides a stable interface for reading JSON from strings, files, and connections, and for serializing common R objects, including vectors, lists, data frames, arrays, environments, and S4 objects. It also exposes parser handlers, callbacks, and S4 methods for applications that need customized JSON processing while preserving established RJSONIO behavior.

- Maintainer: Yaoxiang Li
- Licence: [BSD_3_clause + file LICENSE](/licences/BSD_3_clause.md)
- Latest release: 15 May 2026
- First release: 4 Oct 2010

- [Website](https://yaoxiangli.github.io/RJSONIO/)
- [CRAN page](https://cran.r-project.org/package=RJSONIO)
- [Source repository](https://github.com/yaoxiangli/rjsonio)
- [Issues](https://github.com/YaoxiangLi/RJSONIO/issues)
- [Source of every release](https://github.com/cran/RJSONIO)

[Compare with another package](/compare/RJSONIO.md#add)

**More details**

- Releases: 37
- Needs compilation: Yes
- Config/testthat/edition: 3
- RoxygenNote: 7.3.2

**Task views (1)**

- [Web Technologies and Services](/topics/cran/WebTechnologies.md)

**Cite**

#### Package

Run in R for the authors' preferred citation:

`citation("RJSONIO")`

APA: Yaoxiang Li, CRAN Team, Temple Lang, D., & Wallace, J. (2026). RJSONIO: Serialize R Objects to JSON (Version 2.0.5) [Computer software]. https://doi.org/10.32614/CRAN.package.RJSONIO

BibTeX:

```
@Manual{RJSONIO,
  title  = {RJSONIO: Serialize R Objects to JSON},
  author = {Yaoxiang Li and CRAN Team and Temple Lang, Duncan and Wallace, Jonathan},
  year   = {2026},
  note   = {R package version 2.0.5},
  doi    = {10.32614/CRAN.package.RJSONIO},
  url    = {https://CRAN.R-project.org/package=RJSONIO}
}
```

This package has no citation file, so `citation()` returns this entry built from `DESCRIPTION`.

The repository also keeps a `CITATION.cff`.

#### R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA: Balamuta, J. J. (2026). R Observatory: Metrics for RJSONIO version 2.0.5 [Data set]. HJJB, LLC. Data release v2026-10-28. https://doi.org/10.5281/zenodo.21843040

BibTeX:

```
@misc{robservatoryRJSONIO,
  author    = {Balamuta, James Joseph},
  title     = {{R} {Observatory}: Metrics for {RJSONIO} version 2.0.5},
  year      = {2026},
  publisher = {HJJB, LLC},
  doi       = {10.5281/zenodo.21843040},
  url       = {https://r-observatory.thecoatlessprofessor.com/packages/RJSONIO},
  note      = {Data set. Data release v2026-10-28}
}
```

From data release v2026-10-28, which the citation names so these numbers can be found later.

## Health

[Method](/about/checks-health.md)

All 13 check platforms pass.

13 CRAN platforms: 13 OK.

**Extra checks (1)**

- [Memory protection analysis (rchk)](https://raw.githubusercontent.com/kalibera/cran-checks/master/rchk/results/RJSONIO.out)

Platforms now:

- r-devel-linux-x86_64-debian-clang: OK
- r-devel-linux-x86_64-debian-gcc: OK
- r-devel-linux-x86_64-fedora-clang: OK
- r-devel-linux-x86_64-fedora-gcc: OK
- r-devel-windows-x86_64: OK
- r-oldrel-macos-arm64: OK
- r-oldrel-macos-x86_64: OK
- r-oldrel-windows-x86_64: OK
- r-patched-linux-x86_64: OK
- r-release-linux-x86_64: OK
- r-release-macos-arm64: OK
- r-release-macos-x86_64: OK
- r-release-windows-x86_64: OK

#### Over time

No change since 5 Aug 2026

**As a list (5)**

| Changed | Worst status | OK | Notes | Warnings | Errors |
| --- | --- | ---: | ---: | ---: | ---: |
| 5 Aug 2026 | OK | 13 | 0 | 0 | 0 |
| 1 Aug 2026 | Note | 12 | 1 | 0 | 0 |
| 17 May 2026 | OK | 13 | 0 | 0 | 0 |
| 13 May 2026 | Warning | 12 | 0 | 1 | 0 |
| 10 Mar 2026 | OK | 14 | 0 | 0 | 0 |

Since March 2026

[Check results on CRAN](https://cran.r-project.org/web/checks/check_results_RJSONIO.html)

## Downloads

[Method](/about/downloads.md)

- Downloads in the last 30 days: 19,763 (up 6.2% on the 30 days before, the better direction. It is the sum of 5 channels: CRAN, r2u, autoCRAN, conda-forge and c2d4u.)

CRAN alone: rank among CRAN packages, last 30 days: 894 of 26,530.

| Channel | Downloads in the last 30 days | In the total | Rank in that channel | Change |
| --- | ---: | --- | --- | --- |
| CRAN | 16,097 | yes | 894 of 26,530 | down 3.4% on the 30 days before, the worse direction |
| r2u | 661 | yes | 1,015 of 30,526 | up 200% on the 30 days before, the better direction |
| autoCRAN | 117 | yes | 569 of 29,212 | down 12.7% on the 30 days before, the worse direction |
| conda-forge | 2,868 | yes | 587 of 3,828 | up 85.5% on the 30 days before, the better direction |
| c2d4u | 20 | yes | 895 of 7,575 | down 33.3% on the 30 days before, the worse direction |

Other windows: [Last 90 days](/cran/RJSONIO.md?win=90d#downloads), [Last 365 days](/cran/RJSONIO.md?win=365d#downloads), [All time](/cran/RJSONIO.md?win=all#downloads).

To leave channels out of the total, name them in the address, joined by dots: `?off=conda_forge.c2d4u`.

#### Over time

Downloads over time, the last 12 whole months:

| Month | CRAN | r2u | autoCRAN | conda-forge | c2d4u | Sum |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| Oct 2025 | 28,574 | 62 | no figure | 1,424 | 16 | 30,076 |
| Nov 2025 | 25,848 | 71 | no figure | 1,990 | 10 | 27,919 |
| Dec 2025 | 22,051 | 179 | no figure | 1,808 | 18 | 24,056 |
| Jan 2026 | 16,306 | 128 | no figure | 1,022 | 8 | 17,464 |
| Feb 2026 | 16,796 | 233 | no figure | 1,196 | 3 | 18,228 |
| Mar 2026 | 18,886 | 210 | no figure | 891 | 33 | 20,020 |
| Apr 2026 | 19,885 | 129 | no figure | 835 | 44 | 20,893 |
| May 2026 | 24,922 | 504 | no figure | 1,233 | no figure | 26,659 |
| Jun 2026 | 22,826 | 258 | no figure | 829 | no figure | 23,913 |
| Jul 2026 | 20,253 | 165 | 117 | 939 | 13 | 21,487 |
| Aug 2026 | 18,272 | 224 | 156 | 1,554 | 30 | 20,236 |
| Sep 2026 | 18,090 | 657 | 107 | 2,868 | no figure | not whole yet |

The sum stops at Aug 2026: c2d4u has no later month on record yet.

First day on record: CRAN 2 Oct 2012, r2u 7 May 2022, autoCRAN 29 Jun 2026, conda-forge 28 Apr 2017, c2d4u 8 Oct 2013 (no longer updated).

Every channel here counts downloads, so the channels can be stacked and summed for one period. Each channel counts in its own way and covers a different span of years, so read a sum as a rough total, and read a rise where a channel begins as that channel starting, not as growth.

Weeks start on Monday. A first or last week or month that the channel does not cover in full is left out, so every point is a whole period.

Days with no record add nothing to their week or month. For a little-used package that is usually a day with no downloads, but it can also be a gap in collection.

[Compare downloads](/downloads/compare/RJSONIO.md#add)

## Dependencies

[Method](/about/reverse-dependencies.md)

- Needs: 1
- Dependent packages: 23
- Suggested by: 4

**Needs (1)**

- methods

- Installing it adds: 0 packages, 0 KB of source
- Of those, need compilation: 0

**Optional extras (3)**

- [knitr](/cran/knitr.md)
- [rmarkdown](/cran/rmarkdown.md)
- [testthat](/cran/testthat.md)

**Dependent packages (23)**

| Package | Title | Downloads in 30 days |
| --- | --- | ---: |
| [LDAvis](/cran/LDAvis.md) | Interactive Visualization of Topic Models | 2,604 |
| [gpboost](/cran/gpboost.md) | Combining Tree-Boosting with Gaussian Process and Mixed Effects Models | 1,364 |
| [wilson](/cran/wilson.md) | Web-Based Interactive Omics Visualization | 929 |
| [FAOSTAT](/cran/FAOSTAT.md) | Download Data from the FAOSTAT Database | 662 |
| [RSDA](/cran/RSDA.md) | R to Symbolic Data Analysis | 623 |
| [CirceR](/cran/CirceR.md) | Construct Cohort Inclusion and Restriction Criteria Expressions | 614 |
| [animint2](/cran/animint2.md) | Animated Interactive Grammar of Graphics | 533 |
| [RedditExtractoR](/cran/RedditExtractoR.md) | Reddit Data Extraction Toolkit | 472 |
| [pubmed.mineR](/cran/pubmed.mineR.md) | Text Mining of PubMed Abstracts | 438 |
| [DIZutils](/cran/DIZutils.md) | Utilities for 'DIZ' R Package Development | 392 |
| [switchr](/cran/switchr.md) | Installing, Managing, and Switching Between Distinct Sets of Installed Packages | 387 |
| [CropScapeR](/cran/CropScapeR.md) | Access Cropland Data Layer Data via the 'CropScape' Web Service | 351 |
| [PubChemR](/cran/PubChemR.md) | Interface to the 'PubChem' Database for Chemical Data Retrieval | 336 |
| [ajv](/cran/ajv.md) | Another JSON Schema Validator | 309 |
| [SignacX](/cran/SignacX.md) | Cell Type Identification and Discovery from Single Cell Gene Expression Data | 306 |
| [mitre](/cran/mitre.md) | Cybersecurity MITRE Standards Data and Digraphs | 252 |
| [restimizeapi](/cran/restimizeapi.md) | Functions for Working with the 'www.estimize.com' Web Services | 245 |
| [rbiouml](/cran/rbiouml.md) | Interact with BioUML Server | 234 |
| [cmmr](/cran/cmmr.md) | CEU Mass Mediator RESTful API | 230 |
| [rYoutheria](/cran/rYoutheria.md) | Access to the YouTheria Mammal Trait Database | 213 |
| [lipidmapsR](/cran/lipidmapsR.md) | Lipid Maps Rest Service | 205 |
| [mojson](/cran/mojson.md) | A Serialization-Style Flattening and Description for JSON | 179 |
| [ropensecretsapi](/cran/ropensecretsapi.md) | R Package for the OpenSecrets.org API | 179 |

## Code

[Method](/about/code-metrics.md)

Selected function: `isContainer`

- Kind: Internal R function
- File: R/json.R, line 17
- Lines: 3
- Complexity: 8
- Covered by tests: 100%

Called by 9: [`end`](/cran/RJSONIO.md?fn=end&view=focus#code) (not measured), [`begin`](/cran/RJSONIO.md?fn=begin&view=focus#code) (not measured), [`json_foreach`](/cran/RJSONIO.md?fn=json_foreach&view=focus#code) (not measured), [`reserve`](/cran/RJSONIO.md?fn=reserve&view=focus#code) (not measured), [`at`](/cran/RJSONIO.md?fn=at&view=focus#code) (not measured), [`internalJSONNode::internalJSONNode`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3AinternalJSONNode&view=focus#code) (not measured), [`internalJSONNode::WriteChildrenOneLine`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3AWriteChildrenOneLine&view=focus#code) (not measured), [`makeNotContainer`](/cran/RJSONIO.md?fn=makeNotContainer&view=focus#code) (not measured), [`internalJSONNode::push_front`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3Apush_front&view=focus#code) (not measured)

Calls 0: nothing else in this package

Paths: 2 steps each way.

Called by 9:

- [`end`](/cran/RJSONIO.md?fn=end&view=focus#code), called by 18
  - [`json_foreach`](/cran/RJSONIO.md?fn=json_foreach&view=focus#code), called by 2
  - [`json_throws`](/cran/RJSONIO.md?fn=json_throws&view=focus#code), called by 4
  - [`register_memory_callbacks`](/cran/RJSONIO.md?fn=register_memory_callbacks&view=focus#code)
  - [`remove`](/cran/RJSONIO.md?fn=remove&view=focus#code), called by 5
  - [`internalJSONNode::WriteChildren`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3AWriteChildren&view=focus#code)
  - [`internalJSONNode::WriteChildrenOneLine`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3AWriteChildrenOneLine&view=focus#code)
  - [`JSONWorker::DoArray`](/cran/RJSONIO.md?fn=JSONWorker%3A%3ADoArray&view=focus#code)
  - [`JSONWorker::DoNode`](/cran/RJSONIO.md?fn=JSONWorker%3A%3ADoNode&view=focus#code)
  - [`internalJSONNode::WriteComment`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3AWriteComment&view=focus#code)
  - [`JSON_MAP`](/cran/RJSONIO.md?fn=JSON_MAP&view=focus#code)
  - and 8 more
- [`begin`](/cran/RJSONIO.md?fn=begin&view=focus#code), called by 16
  - [`json_foreach`](/cran/RJSONIO.md?fn=json_foreach&view=focus#code), called by 2
  - [`json_throws`](/cran/RJSONIO.md?fn=json_throws&view=focus#code), called by 4
  - [`register_memory_callbacks`](/cran/RJSONIO.md?fn=register_memory_callbacks&view=focus#code)
  - [`internalJSONNode::WriteChildren`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3AWriteChildren&view=focus#code)
  - [`internalJSONNode::WriteChildrenOneLine`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3AWriteChildrenOneLine&view=focus#code)
  - [`JSONStream::parse`](/cran/RJSONIO.md?fn=JSONStream%3A%3Aparse&view=focus#code)
  - [`JSONWorker::DoArray`](/cran/RJSONIO.md?fn=JSONWorker%3A%3ADoArray&view=focus#code)
  - [`JSONWorker::DoNode`](/cran/RJSONIO.md?fn=JSONWorker%3A%3ADoNode&view=focus#code)
  - [`internalJSONNode::WriteComment`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3AWriteComment&view=focus#code)
  - [`shrinkString`](/cran/RJSONIO.md?fn=shrinkString&view=focus#code), called by 2
  - and 6 more
- [`json_foreach`](/cran/RJSONIO.md?fn=json_foreach&view=focus#code), called by 2
  - [`internalJSONNode::internalJSONNode`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3AinternalJSONNode&view=focus#code)
  - [`res`](/cran/RJSONIO.md?fn=res&view=focus#code)
- [`reserve`](/cran/RJSONIO.md?fn=reserve&view=focus#code), called by 8
  - [`internalJSONNode::internalJSONNode`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3AinternalJSONNode&view=focus#code)
  - [`JSONWorker::FixString`](/cran/RJSONIO.md?fn=JSONWorker%3A%3AFixString&view=focus#code)
  - [`makeIndent`](/cran/RJSONIO.md?fn=makeIndent&view=focus#code), called by 2
  - [`write`](/cran/RJSONIO.md?fn=write&view=focus#code), called by 1
  - [`write_formatted`](/cran/RJSONIO.md?fn=write_formatted&view=focus#code), called by 1
  - [`decode`](/cran/RJSONIO.md?fn=decode&view=focus#code)
  - [`jsonChildren::reserve2`](/cran/RJSONIO.md?fn=jsonChildren%3A%3Areserve2&view=focus#code)
  - [`json_reserve`](/cran/RJSONIO.md?fn=json_reserve&view=focus#code)
- [`at`](/cran/RJSONIO.md?fn=at&view=focus#code), called by 7
  - [`json_throws`](/cran/RJSONIO.md?fn=json_throws&view=focus#code), called by 4
  - [`internal`](/cran/RJSONIO.md?fn=internal&view=focus#code), called by 1
  - [`JSONNode::find`](/cran/RJSONIO.md?fn=JSONNode%3A%3Afind&view=focus#code)
  - [`JSONNode::operator[]`](/cran/RJSONIO.md?fn=JSONNode%3A%3Aoperator%5B%5D&view=focus#code)
  - [`json_at`](/cran/RJSONIO.md?fn=json_at&view=focus#code), called by 1
  - [`operator`](/cran/RJSONIO.md?fn=operator&view=focus#code)
  - [`json_get`](/cran/RJSONIO.md?fn=json_get&view=focus#code)
- [`internalJSONNode::internalJSONNode`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3AinternalJSONNode&view=focus#code)
- [`internalJSONNode::WriteChildrenOneLine`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3AWriteChildrenOneLine&view=focus#code)
- [`makeNotContainer`](/cran/RJSONIO.md?fn=makeNotContainer&view=focus#code), called by 1
  - [`internalJSONNode::Set`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3ASet&view=focus#code)
- [`internalJSONNode::push_front`](/cran/RJSONIO.md?fn=internalJSONNode%3A%3Apush_front&view=focus#code)

Calls 0:

- nothing else in this package

The open file in the files map is `R/json.R`.

- Functions: 5
- Lines: 24
- Calls that stay inside it: 0
- Calls to other files: 3, to 3
- Calls from other files: 9, from 6

It calls: `src/rlibjson.c` (1 call), `R/readJSON.R` (1 call), `src/fast_to_json.c` (1 call)

Called from: `src/libjson/Source/internalJSONNode.h` (2 calls), `src/libjson/Source/JSONSharedString.h` (2 calls), `src/internalJSONNode.cpp` (2 calls), `src/libjson/Source/JSONNode.h` (1 call), `src/JSONWriter.cpp` (1 call), `src/JSONChildren.cpp` (1 call)

| Function in json.R | Calls in other files |
| --- | --- |
| [`isContainer`](/cran/RJSONIO.md?fn=isContainer&view=focus#code) selected | nothing outside this file |
| [`jsonPretty`](/cran/RJSONIO.md?fn=jsonPretty&view=focus#code) | [`R_jsonPrettyPrint`](/cran/RJSONIO.md?fn=R_jsonPrettyPrint&view=focus#code), [`mapEncoding`](/cran/RJSONIO.md?fn=mapEncoding&view=focus#code) |
| [`toJSONAtomicFast`](/cran/RJSONIO.md?fn=toJSONAtomicFast&view=focus#code) | [`R_toJSONAtomicFast`](/cran/RJSONIO.md?fn=R_toJSONAtomicFast&view=focus#code) |
| [`dQuote`](/cran/RJSONIO.md?fn=dQuote&view=focus#code) | nothing outside this file |
| [`trim`](/cran/RJSONIO.md?fn=trim&view=focus#code) | nothing outside this file |


4 files with no calls to or from another: `R/asVars.R`, `src/init.c`, `src/libjson/Source/JSONDebug.h`, `src/libjson/Source/JSON_Base64.h`.

The whole package has 355 function names in 43 files and 400 calls between them. Most calls between files: `src/JSONNode.cpp` and `src/libjson/Source/JSONNode.h` (20 calls), `src/libjson.cpp` and `src/rlibjson.c` (20 calls), `src/libjson.cpp` and `src/libjson/Source/JSONNode.h` (20 calls), `src/libjson.cpp` and `src/rparser.c` (17 calls), `src/libjson.cpp` and `src/libjson/Source/JSONMemory.h` (17 calls).

Graph: the whole call graph has 264 function names that take part in a call and 400 calls between them, set out in 11 layers with callers before what they call. Of these calls, 3 close a loop and run the other way. 91 function names have no calls and are left out. Called by the most functions: `end` (18), `begin` (16), `type` (15), `makeUniqueInternal` (13), `allocate` (12). Calling the most functions: `json_foreach` (14), `json_throws` (11), `processJSONNode` (11), `register_memory_callbacks` (10), `R_toJSONAtomicFast` (8).

Most connected functions: [`isContainer`](/cran/RJSONIO.md?fn=isContainer&view=focus#code) 9, [`condense`](/cran/RJSONIO.md?fn=condense&view=focus#code) 2, [`jsonPretty`](/cran/RJSONIO.md?fn=jsonPretty&view=focus#code) 2, [`oldFromJSON`](/cran/RJSONIO.md?fn=oldFromJSON&view=focus#code) 2, [`basicJSONHandler`](/cran/RJSONIO.md?fn=basicJSONHandler&view=focus#code) 1, [`isContent`](/cran/RJSONIO.md?fn=isContent&view=focus#code) 1

To select another function, add ?fn=NAME to this address.

The call graph also has an address of its own: /cran/RJSONIO/graph.md?fn=isContainer&view=focus

- Functions: 683
- Public exports: 11
- Lines of R code: 887
- Median complexity: 3

**Functions (683)**

| Function (sorted, low to high) | Kind | File | Lines | Complexity | Covered |
| --- | --- | --- | ---: | ---: | ---: |
| [`asJSVars`](/cran/RJSONIO.md?fn=asJSVars#code) | Public | R/asVars.R | 33 | 6 | 56% |
| [`basicJSONHandler`](/cran/RJSONIO.md?fn=basicJSONHandler#code) | Public | R/readJSON.R | 82 | 16 | 87% |
| [`readJSONStream`](/cran/RJSONIO.md?fn=readJSONStream#code) | Public | R/stream.R | 12 | 2 | 80% |
| [`condense`](/cran/RJSONIO.md?fn=condense#code) | Internal | R/readJSON.R | 26 | 12 | 0% |
| [`dQuote`](/cran/RJSONIO.md?fn=dQuote#code) | Internal | R/json.R | 7 | 2 | 67% |
| [`getStringRoutineType`](/cran/RJSONIO.md?fn=getStringRoutineType#code) | Internal | R/readJSON.R | 10 | 4 | 80% |
| [`isContainer`](/cran/RJSONIO.md?fn=isContainer#code) | Internal | R/json.R | 3 | 8 | 100% |
| [`isContent`](/cran/RJSONIO.md?fn=isContent#code) | Internal | R/readJSON.R | 4 | 3 | 100% |
| [`jsonPretty`](/cran/RJSONIO.md?fn=jsonPretty#code) | Internal | R/json.R | 6 | 1 | 100% |
| [`mapEncoding`](/cran/RJSONIO.md?fn=mapEncoding#code) | Internal | R/readJSON.R | 13 | 3 | 86% |
| [`oldFromJSON`](/cran/RJSONIO.md?fn=oldFromJSON#code) | Internal | R/readJSON.R | 26 | 3 | 75% |
| [`simpleJSONHandler`](/cran/RJSONIO.md?fn=simpleJSONHandler#code) | Internal | R/simpleHandler.R | 47 | 13 | 0% |

This page lists 1 to 12 of 683 functions. [Next](/cran/RJSONIO.md?sort=name&order=asc&fpage=2#functions)

**Size and composition**

#### Lines by kind (21,569)

| Kind | Lines | Share |
| --- | ---: | ---: |
| R code | 887 | 4% |
| Tests | 816 | 4% |
| Documentation | 784 | 4% |
| Guides | 640 | 3% |
| Compiled code | 18,442 | 86% |

#### Lines by language

| Language | Lines | Share |
| --- | ---: | ---: |
| C | 9,486 | 44% |
| C++ | 8,956 | 42% |
| R | 1,678 | 8% |
| Rd | 784 | 4% |
| Vignettes | 640 | 3% |
| JSON | 25 | 0.1% |

Languages are counted from file extensions.

- Files: 187
- R functions: 14
- Compiled functions: 838
- Object systems: S4: 4 generics, S4: 31 methods

**Complexity**

- Median: 3
- Mean: 5.36
- Highest: 16
- Median lines per function: 11

_About complexity: Cyclomatic complexity counts the independent paths through a function: 1 is a straight line, higher is harder to test. R functions only._

**Call graph figures**

- R functions: 14
- Calls: 4
- Unconnected: 7
- Groups: 3

**Growth (37 releases)**

Total lines by release: from 3,152 (on 8 Sep 2010) to 21,569 (on 15 May 2026). The lowest is 3,152 and the highest is 21,569.

**Release changes**

[Both releases side by side](/cran/RJSONIO/compare/2.0.0...2.0.5.md)

**2.0.0 to 2.0.5**, 5 Apr 2025 to 15 May 2026

- Files changed: 49
- Lines added: 5,595
- Lines deleted: 22
- Exports: No change

**Changed measures (20)**

| Measure | Subject | Before | After |
| --- | --- | ---: | ---: |
| Total lines | Structure | 20,261 | 21,569 |
| Lines of R code | Structure | 867 | 887 |
| Lines of compiled code | Structure | 18,204 | 18,442 |
| Lines of tests | Structure | 406 | 816 |
| R functions | Languages | 13 | 14 |
| C functions | Languages | 374 | 388 |
| Compiled share | Languages | 90% | 86% |
| README | Documentation | No | Yes |
| Vignettes | Documentation | No | Yes |
| NEWS file | Documentation | No | Yes |
| Test cases | Testing | 0 | 45 |
| Test lines per line of code | Testing | 0.47 | 0.92 |
| testthat edition | Testing |  | 3 |
| Exports named in tests | Testing | 45% | 73% |
| Mean complexity | Complexity | 5.69 | 5.36 |
| Lines per function (mean) | Complexity | 20.85 | 19.79 |
| Functions (nodes) | Call graph | 13 | 14 |
| Mean connections | Call graph | 0.62 | 0.57 |
| Functions with no connections | Call graph | 6 | 7 |
| Calls into compiled code | Call graph | 3 | 4 |

**Most changed files (12 of 49)**

| File | Lines added | Lines deleted |
| --- | ---: | ---: |
| `inst/doc/parsing-json.html` | 468 | 0 |
| `inst/doc/writing-json.html` | 464 | 0 |
| `inst/doc/advanced-customization.html` | 460 | 0 |
| `inst/doc/rjsonio.html` | 449 | 0 |
| `inst/doc/type-mapping.html` | 449 | 0 |
| `inst/doc/connections-and-streaming.html` | 431 | 0 |
| `inst/doc/choosing-json-tools.html` | 346 | 0 |
| `src/fast_to_json.c` | 230 | 0 |
| `inst/doc/advanced-customization.Rmd` | 110 | 0 |
| `vignettes/advanced-customization.Rmd` | 110 | 0 |
| `README.md` | 103 | 0 |
| `inst/doc/parsing-json.Rmd` | 97 | 0 |

## Tests

[Method](/about/coverage.md)

The tests ran and coverage was measured.

- Lines run by tests: 41.7%
- Expressions run by tests: 41%
- Test cases: 45
- Exports named in tests: 72.7%

**Coverage by file (6)**

6 files measured, least covered first.

| File | Lines | Run by tests | Not run | Coverage |
|---|---:|---:|---:|---:|
| `R/simpleHandler.R`, 1 function | 35 | 0 | 35 | 0% |
| `R/isValid.R`, 4 functions | 9 | 3 | 6 | 33% |
| `R/asVars.R`, 4 functions | 25 | 10 | 15 | 40% |
| `R/json.R`, 22 functions | 149 | 87 | 62 | 58% |
| `R/readJSON.R`, 14 functions | 139 | 104 | 35 | 75% |
| `R/stream.R`, 1 function | 5 | 4 | 1 | 80% |

Not measured, 53 files: `src/ConvertUTF.c`, `src/fast_to_json.c`, `src/init.c`, `src/internalJSONNode.cpp`, `src/JSONAllocator.cpp`, `src/JSONChildren.cpp`, `src/JSONDebug.cpp`, `src/JSONIterators.cpp`, `src/JSONMemory.cpp`, `src/JSONNode.cpp`, `src/JSONNode_Mutex.cpp`, `src/JSONPreparse.cpp`, `src/JSONStream.cpp`, `src/JSONValidator.cpp`, `src/JSONWorker.cpp`, `src/JSONWriter.cpp`, `src/JSON_parser.c`, `src/libjson.cpp`, `src/libjson/Dependencies/libbase64++/libbase64++.h`, `src/libjson/Dependencies/mempool++/mempool.h`, `src/libjson/libjson.h`, `src/libjson/Source/internalJSONNode.cpp`, `src/libjson/Source/internalJSONNode.h`, `src/libjson/Source/JSONAllocator.cpp`, `src/libjson/Source/JSONAllocator.h`, `src/libjson/Source/JSONChildren.cpp`, `src/libjson/Source/JSONChildren.h`, `src/libjson/Source/JSONDebug.cpp`, `src/libjson/Source/JSONDebug.h`, `src/libjson/Source/JSONIterators.cpp`, `src/libjson/Source/JSONMemory.cpp`, `src/libjson/Source/JSONMemory.h`, `src/libjson/Source/JSONNode.cpp`, `src/libjson/Source/JSONNode.h`, `src/libjson/Source/JSONNode_Mutex.cpp`, `src/libjson/Source/JSONPreparse.cpp`, `src/libjson/Source/JSONPreparse.h`, `src/libjson/Source/JSONSharedString.h`, `src/libjson/Source/JSONSingleton.h`, `src/libjson/Source/JSONStats.h`, `src/libjson/Source/JSONStream.cpp`, `src/libjson/Source/JSONStream.h`, `src/libjson/Source/JSONValidator.cpp`, `src/libjson/Source/JSONValidator.h`, `src/libjson/Source/JSONWorker.cpp`, `src/libjson/Source/JSONWorker.h`, `src/libjson/Source/JSONWriter.cpp`, `src/libjson/Source/JSON_Base64.h`, `src/libjson/Source/libjson.cpp`, `src/libjson/Source/NumberToString.h`, `src/RJSON.c`, `src/rlibjson.c`, `src/rparser.c`.

**Coverage run**

- Lines counted: 362
- Lines the tests ran: 208
- Tests passed: Yes
- Measured with: covr 3.6.5 on R 4.6.1

**Test suite**

- Has tests: Yes
- Test frameworks: testthat, tinytest
- Test cases: 45
- Lines of tests: 816
- Test lines per line of code: 0.92

## Documentation

[Method](/about/code-metrics.md)

- Exports documented: 100%
- Arguments documented: 97.3%
- Return value documented: 100%
- Help pages with examples: 100%
- Examples run in checks: 83.3%

**Guides (7)**

- [Advanced Customization](https://cran.r-project.org/web/packages/RJSONIO/vignettes/advanced-customization.html)
- [Choosing JSON Tools](https://cran.r-project.org/web/packages/RJSONIO/vignettes/choosing-json-tools.html)
- [Connections and Streaming](https://cran.r-project.org/web/packages/RJSONIO/vignettes/connections-and-streaming.html)
- [Parsing JSON](https://cran.r-project.org/web/packages/RJSONIO/vignettes/parsing-json.html)
- [RJSONIO](https://cran.r-project.org/web/packages/RJSONIO/vignettes/rjsonio.html)
- [Type Mapping](https://cran.r-project.org/web/packages/RJSONIO/vignettes/type-mapping.html)
- [Writing JSON](https://cran.r-project.org/web/packages/RJSONIO/vignettes/writing-json.html)

**Other documentation**

- README: Yes, 252 words
- Release notes file: Yes
- Help pages: 7
- Lines of documentation: 784

## People

[Method](/about/author-identity.md)

- [Yaoxiang Li](/people/Yaoxiang+Li.md): Maintainer since 2.0.0 (2025), previously CRAN Team (1.3-1.4 to 1.3-1.11) and Duncan Temple Lang (0.3-1 to 1.3-0), author, contributor. ORCID https://orcid.org/0000-0001-9200-1016
- [CRAN Team](/people/CRAN+Team.md): Author
- [Duncan Temple Lang](/people/Duncan+Temple+Lang.md): Author. ORCID https://orcid.org/0000-0003-0159-1546
- [Jonathan Wallace](/people/Jonathan+Wallace.md): Author

**Earlier names (1)**

- ninja9578

## Repository

[Method](/about/repo-signals.md#figures)

[YaoxiangLi](/repos/YaoxiangLi.md) / [rjsonio](https://github.com/yaoxiangli/rjsonio) on github.com

- Stars: 1 (no change on 30 days ago)
- Forks: 0
- Open issues: 0
- Last commit: 15 May 2026

**Activity**

- Commits: 13
- Open pull requests: 0
- Tagged releases: 6
- Latest tagged release: v2.0.5, 15 May 2026
- Issues closed in: –
- Pull requests closed in: –
- Pull requests merged: –
- Created: 14 May 2026
- Licence file reads as: –

**Development practices (10)**

| Kind | Found |
| --- | --- |
| Continuous integration | GitHub Actions, R CMD check workflow The `R CMD check` workflow runs on Linux, macOS and Windows |
| Governance and community | Code of conduct, Contributing guide |
| Docs source | pkgdown GitHub Pages site last deployed 2026-05-15 The repository has a site deploy workflow |
| Research and citation | CITATION.cff |
| Lint, format, editor | RStudio project |
| Git structural | .gitattributes |

[Across YaoxiangLi](/repos/YaoxiangLi.md#practices)

## History

[Method](/about/archive.md)

The line runs from the first release of RJSONIO on 4 Oct 2010 to 28 Oct 2026 and marks all 37 of its releases.

| Version | Released | R | Events |
| --- | --- | ---: | --- |
| [2.0.5](/cran/RJSONIO/v/2.0.5.md) current | 15 May 2026 | 4.6.0 |  |
| [2.0.0](/cran/RJSONIO/v/2.0.0.md) | 5 Apr 2025 | 4.4.3 | Maintainer: Yaoxiang Li |
| [1.3-1.11](/cran/RJSONIO/v/1.3-1.11.md) | 26 Mar 2025 | 4.4.3 |  |
| [1.3-1.10](/cran/RJSONIO/v/1.3-1.10.md) | 24 Mar 2025 | 4.4.3 |  |
| [1.3-1.9](/cran/RJSONIO/v/1.3-1.9.md) | 27 Nov 2023 | 4.3.2 |  |
| [1.3-1.8](/cran/RJSONIO/v/1.3-1.8.md) | 31 Jan 2023 | 4.2.2 |  |
| [1.3-1.7](/cran/RJSONIO/v/1.3-1.7.md) | 14 Jan 2023 | 4.2.2 |  |
| [1.3-1.6](/cran/RJSONIO/v/1.3-1.6.md) | 16 Sep 2021 | 4.1.1 |  |

**Earlier versions (29)**

| Version | Released | R | Events |
| --- | --- | ---: | --- |
| [1.3-1.5](/cran/RJSONIO/v/1.3-1.5.md) | 17 Aug 2021 | 4.1.1 |  |
| [1.3-1.4](/cran/RJSONIO/v/1.3-1.4.md) | 15 Jan 2020 | 3.6.2 | Maintainer: CRAN Team |
| [1.3-1.3](/cran/RJSONIO/v/1.3-1.3.md) | 3 Oct 2019 | 3.6.1 |  |
| [1.3-1.2](/cran/RJSONIO/v/1.3-1.2.md) | 4 Jun 2019 | 3.6.0 |  |
| [1.3-1.1](/cran/RJSONIO/v/1.3-1.1.md) | 3 Mar 2019 | 3.5.2 |  |
| [1.3-1](/cran/RJSONIO/v/1.3-1.md) | 12 Nov 2018 | 3.5.0 | Orphaned (no maintainer) 12 Nov 2018 |
| [1.3-0](/cran/RJSONIO/v/1.3-0.md) | 28 Jul 2014 | 3.1.1 |  |
| [1.2-0.2](/cran/RJSONIO/v/1.2-0.2.md) | 29 Apr 2014 | 3.1.0 |  |
| [1.2-0.1](/cran/RJSONIO/v/1.2-0.1.md) | 26 Apr 2014 | 3.1.0 |  |
| [1.0-3](/cran/RJSONIO/v/1.0-3.md) | 28 Mar 2013 | 2.15.3 |  |
| [1.0-2](/cran/RJSONIO/v/1.0-2.md) | 20 Mar 2013 | 2.15.3 |  |
| [1.0-1](/cran/RJSONIO/v/1.0-1.md) | 10 Oct 2012 | 2.15.1 |  |
| [1.0-0](/cran/RJSONIO/v/1.0-0.md) | 30 Sep 2012 | 2.15.1 |  |
| [0.98-1](/cran/RJSONIO/v/0.98-1.md) | 6 Feb 2012 | 2.14.1 |  |
| [0.98-0](/cran/RJSONIO/v/0.98-0.md) | 2 Feb 2012 | 2.14.1 |  |
| [0.97-0](/cran/RJSONIO/v/0.97-0.md) | 8 Jan 2012 | 2.14.1 |  |
| [0.96-0](/cran/RJSONIO/v/0.96-0.md) | 23 Oct 2011 | 2.13.2 |  |
| [0.95-0](/cran/RJSONIO/v/0.95-0.md) | 5 Sep 2011 | 2.13.1 |  |
| [0.94-0](/cran/RJSONIO/v/0.94-0.md) | 23 Aug 2011 | 2.13.1 |  |
| [0.92-0](/cran/RJSONIO/v/0.92-0.md) | 16 Aug 2011 | 2.13.1 |  |
| [0.91-0](/cran/RJSONIO/v/0.91-0.md) | 15 Aug 2011 | 2.13.1 |  |
| [0.8-2](/cran/RJSONIO/v/0.8-2.md) | 3 Aug 2011 | 2.13.1 |  |
| [0.8-1](/cran/RJSONIO/v/0.8-1.md) | 30 Jul 2011 | 2.13.1 |  |
| [0.7-3](/cran/RJSONIO/v/0.7-3.md) | 6 Jun 2011 | 2.13.0 |  |
| [0.7-2](/cran/RJSONIO/v/0.7-2.md) | 10 May 2011 | 2.13.0 |  |
| [0.7-1](/cran/RJSONIO/v/0.7-1.md) | 30 Apr 2011 | 2.13.0 |  |
| [0.5-0](/cran/RJSONIO/v/0.5-0.md) | 22 Feb 2011 | 2.12.1 |  |
| [0.4-1](/cran/RJSONIO/v/0.4-1.md) | 6 Dec 2010 | 2.12.0 |  |
| [0.3-1](/cran/RJSONIO/v/0.3-1.md) | 4 Oct 2010 | 2.11.1 |  |

**Release notes (2.0.5)**

**Installation**

- Added bounds checks in the bundled UTF-8 conversion helper to avoid GCC 16 `-Warray-bounds` installation warnings on CRAN's `r-devel-linux-x86_64-debian-gcc` check flavor.

---

R Observatory is independent of the R Project, CRAN and Bioconductor. The same page for people is at /cran/RJSONIO, and every address is listed at /llms.txt.
