knitr::opts_chunk$set(echo = TRUE, screenshot.force = TRUE, fig.path = "img/fig-")

jsondiff

Build Status

Overview

jsondiff finds and renders difference in values between JSONs. Diffing R objects (like lists and dataframes) is also supported by automatic conversion to JSON. It is implemented as an R interface to jsondiffpatch, powered by htmlwidgets framework.

Installation

devtools::install_github("bergant/jsondiff")

Usage

Compare two lists:

x <- list(
  name = "Pluto", orbital_speed_kms = 4.7, category = "planet", 
  composition = c("methane", "nitrogen")
)

y <- list(
  name = "Pluto", category = "dwarf planet", orbital_speed_kms = 4.7, 
  composition = c("nitrogen", "methane", "carbon monoxide")
)

library(jsondiff)

jsondiff(x, y)

Show also unchanged data:

jsondiff(x, y, hide_unchanged = FALSE)

Character vectors of size 1 are evaluated as JSONs:

library(jsonlite)
json_x <- toJSON(x) 
json_y <- toJSON(y) 

jsondiff(json_x, json_y)

Data frames (example is from daff package, which is probably a better choice to handle difference between data frames than jsondiff):

x <- y <- iris[1:3,]

x <- head(x,2) # remove a row
x[1,1] <- 10 # change a value
x$hello <- "world"  # add a column
x$Species <- NULL # remove a column


jsondiff(y, x)

Note that there are several options when converting R objects to JSON. Instead of using toJSON explicitly, one can use json_options. For example, converting from data frame to JSON as "column first":

jsondiff(y, x, json_opt = json_options(dataframe = "columns", factor = "string"))

Related projects

Made possible by:

See also:

License

MIT



bergant/jsondiff documentation built on May 22, 2019, 12:37 p.m.