The intention of the package fuctionality is to (de)serialize language specific complex objects towards generic JSON-datatype objects. The JSON conversion allows for flexible cross language communication when the package is implemented across different languages. This package provides an R implementation of the (de)serialization functionality.
the package can be installed from github by using the devtools
utility:
# install.packages("devtools") # if devtools currently not installed devtools::install_github("VermeirJellen/essentialjsonserializer_r")
Currently, 6 generic complex JSON-datatypes are provided. Corresponding R-mappings are defined as follows:
POSIXct
objectsxts
objectsxts
objects (n > 1)dataframe
objectsdataframe
objects (n > 1)matrix
objectsThe package provides the user with the EssentialJSONSerializer
reference class. Following functions
are provided:
RToList
: Convert complex R structures to a generic datatype list structure.RToJSON
: Convert complex R structures to a generic datatype JSON structure.RFromList
: Convert generic datatype list structure to complex R-specific objects.RFromJSON
: Convert generic datatype JSON structure to complex R-specific objects.Sys.setenv(tz="UTC") library(essentialjsonserializer) essential.serializer <- EssentialJSONSerializer$new()
Serialize:
list.input <- list(c(1, 2, 3, 4, 5), c(6, 7, 8), list(c(1, 2, 3))) list.json <- essential.serializer$RToJSON(list.input) cat(list.json)
Deserialize:
list.json.revert <- essential.serializer$RFromJSON(list.json)
Serialize:
datetime.input <- as.POSIXct(Sys.time(), tz="UTC") datetime.json <- essential.serializer$RToJSON(datetime.input) cat(datetime.json)
Deserialize:
datetime.json.revert <- essential.serializer$RFromJSON(datetime.json) datetime.json.revert
Serialize:
datetime.nested.input <- list(input.1 = datetime.input, input.2 = as.POSIXct(Sys.Date(), tz="UTC")) datetime.nested.json <- essential.serializer$RToJSON(datetime.nested.input) cat(datetime.nested.json)
Deserialize:
datetime.nested.json.revert <- essential.serializer$RFromJSON(datetime.nested.json) datetime.nested.json.revert
Serialize:
timeseries.input <- xts::xts(matrix(c(5, 7, 9, NA), ncol=1), order.by = c(as.POSIXct("2017-01-01", tz="UTC"), as.POSIXct("2017-01-02", tz="UTC"), as.POSIXct("2017-01-03", tz="UTC"), as.POSIXct("2017-01-04", tz="UTC"))) names(timeseries.input) <- "name_series" timeseries.json <- essential.serializer$RToJSON(timeseries.input) cat(timeseries.json)
Deserialize:
timeseries.json.revert <- essential.serializer$RFromJSON(timeseries.json) timeseries.json.revert
Serialize:
timeseriesndim.input <- xts:::xts(matrix(c(5, 7, 9, 12, 15, 19), ncol=2), order.by = c(as.POSIXct("2017-01-01", tz="UTC"), as.POSIXct("2017-01-02", tz="UTC"), as.POSIXct("2017-01-03", tz="UTC"))) names(timeseriesndim.input) <- c("name_series_1", "name_series_2") timeseriesndim.json <- essential.serializer$RToJSON(timeseriesndim.input) cat(timeseriesndim.json)
Deserialize:
timeseriesndim.json.revert <- essential.serializer$RFromJSON(timeseriesndim.json) timeseriesndim.json.revert
Serialize:
timeseries.nested.input <- list(ts1 = timeseries.input, ts2 = timeseriesndim.input) timeseries.nested.json <- essential.serializer$RToJSON(timeseries.nested.input) cat(timeseries.nested.json)
Deserialize:
timeseries.nested.json.revert <- essential.serializer$RFromJSON(timeseries.nested.json) timeseries.nested.json.revert
Serialize:
series.input <- data.frame(c(1, 2, 3, 4), row.names = c("one", "two", "three", "four")) names(series.input) <- "only_column" series.json <- essential.serializer$RToJSON(series.input) cat(series.json)
Deserialize:
series.json.revert <- essential.serializer$RFromJSON(series.json) series.json.revert
Serialize:
dataframe.input <- data.frame(c(1, 2, 3, 4), c(4, 5, 6, 7), row.names = c("one", "two", "three", "four")) names(dataframe.input) <- c("first_col", "second_col") dataframe.json <- essential.serializer$RToJSON(dataframe.input) cat(dataframe.json)
Deserialize:
dataframe.json.revert <- essential.serializer$RFromJSON(dataframe.json) dataframe.json.revert
Serialize:
matrix.input <- matrix(c(1, 2, 3, 4, 5, 6), ncol = 2, byrow = TRUE) matrix.json <- essential.serializer$RToJSON(matrix.input) cat(matrix.json)
Deserialize:
matrix.json.revert <- essential.serializer$RFromJSON(matrix.json) matrix.json.revert
Serialize:
r.input <- list(list.input = list.input, datetime.input = datetime.input, datetime.nested = datetime.nested.input, timeseries.input = timeseries.input, timeseriesndim.input = timeseriesndim.input, series.input = series.input, dataframe.input = dataframe.input, matrix.input = matrix.input, timeseries.nested = timeseries.nested.input) r.json <- essential.serializer$RToJSON(r.input) cat(r.json)
Deserialize:
r.json.revert <- essential.serializer$RFromJSON(r.json) r.json.revert
If you find this software useful and/or you would like to see additional extensions, feel free to donate some btc:
Copyright 2019 Essential Data Science Consulting ltd. (EssentialDataScience.com / jellenvermeir@essentialdatascience.com). This software is copyrighted under the MIT license: View added LICENSE file.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.