Blame | Last modification | View Log | Download | RSS feed
library(RJSONIO)roundTrip =# compare can be all.equalfunction(x, y = x, simplify = TRUE, asIs = NA, compare = identical) {ans <- fromJSON(toJSON(x, asIs = asIs), simplify = simplify)compare(ans, y)}stopifnot(roundTrip(c(TRUE, FALSE)))stopifnot(roundTrip(TRUE))try(stopifnot(roundTrip(1L))) # fails since 1L becomes a numericstopifnot(roundTrip(1))stopifnot(roundTrip("xyz"))stopifnot(roundTrip(c(TRUE, FALSE)))stopifnot(roundTrip(1:2, as.numeric(1:2)))stopifnot(roundTrip(c(1, 2, 3)))stopifnot(roundTrip(c("abc", "xyz")))# with namesstopifnot(roundTrip(c(a = TRUE)))stopifnot(roundTrip(c(a = 1)))stopifnot(roundTrip(c(a = "xyz")))stopifnot(roundTrip(c(a = 1L), c(a = 1)))# listsstopifnot(roundTrip(list(1L), asIs = FALSE, simplify = FALSE, list(1)))#stopifnot(roundTrip(list(1, 2), asIs = FALSE, simplify = FALSE, list(1, 2)))stopifnot(roundTrip(list(1, 2), asIs = TRUE, simplify = FALSE, list(list(1), list(2))))stopifnot(roundTrip(list(a= 1, b = 2), asIs = TRUE, simplify = FALSE, list(a = list(1), b = list(2))))#tmp = list(a = 1, b = c(1, 2), c = list(1:3, x = c(TRUE, FALSE, FALSE), list(c("a", "b", "c", "d"))))tmp1 = fromJSON(toJSON(tmp))all.equal(tmp, tmp1)roundTrip(tmp, compare = all.equal)