Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions R/fromJSON.R
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#' @param simplifyVector coerce JSON arrays containing only primitives into an atomic vector
#' @param simplifyDataFrame coerce JSON arrays containing only records (JSON objects) into a data frame
#' @param simplifyMatrix coerce JSON arrays containing vectors of equal mode and dimension into matrix or array
#' @param nesting allow data frames to contain other data frame as columns
#' @param flatten automatically \code{\link{flatten}} nested data frames into a single non-nested data frame
#' @param x the object to be encoded
#' @param dataframe how to encode data.frame objects: must be one of 'rows', 'columns' or 'values'
Expand Down Expand Up @@ -75,7 +76,7 @@
#' identical(data3, flatten(data2))
#' }
fromJSON <- function(txt, simplifyVector = TRUE, simplifyDataFrame = simplifyVector,
simplifyMatrix = simplifyVector, flatten = FALSE, ...) {
simplifyMatrix = simplifyVector, flatten = FALSE, nesting = TRUE, ...) {

# check type
if (!is.character(txt) && !inherits(txt, "connection")) {
Expand All @@ -98,7 +99,7 @@ fromJSON <- function(txt, simplifyVector = TRUE, simplifyDataFrame = simplifyVec

# call the actual function (with deprecated arguments)
parse_and_simplify(txt = txt, simplifyVector = simplifyVector, simplifyDataFrame = simplifyDataFrame,
simplifyMatrix = simplifyMatrix, flatten = flatten, ...)
simplifyMatrix = simplifyMatrix, nesting = nesting, flatten = flatten, ...)
}

parse_and_simplify <- function(txt, simplifyVector = TRUE, simplifyDataFrame = simplifyVector,
Expand Down
8 changes: 4 additions & 4 deletions R/simplify.R
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
simplify <- function(x, simplifyVector = TRUE, simplifyDataFrame = TRUE, simplifyMatrix = TRUE,
simplifyDate = simplifyVector, homoList = TRUE, flatten = FALSE, columnmajor = FALSE,
simplifySubMatrix = simplifyMatrix) {
simplifySubMatrix = simplifyMatrix, nesting = TRUE, allowNestHere = TRUE) {

#This includes '[]' and '{}')
if (!is.list(x) || !length(x)) {
return(x)
}

# list can be a dataframe recordlist
if (isTRUE(simplifyDataFrame) && is.recordlist(x)) {
mydf <- simplifyDataFrame(x, flatten = flatten, simplifyMatrix = simplifySubMatrix)
if (isTRUE(allowNestHere) && isTRUE(simplifyDataFrame) && is.recordlist(x)) {
mydf <- simplifyDataFrame(x, flatten = flatten, simplifyMatrix = simplifySubMatrix, nesting = nesting)
if(isTRUE(simplifyDate) && is.data.frame(mydf) && is.datelist(mydf)){
return(parse_date(mydf[["$date"]]))
}
Expand All @@ -23,7 +23,7 @@ simplify <- function(x, simplifyVector = TRUE, simplifyDataFrame = TRUE, simplif

# apply recursively
out <- lapply(x, simplify, simplifyVector = simplifyVector, simplifyDataFrame = simplifyDataFrame,
simplifyMatrix = simplifySubMatrix, columnmajor = columnmajor, flatten = flatten)
simplifyMatrix = simplifySubMatrix, columnmajor = columnmajor, flatten = flatten, nesting = nesting)

# fix for mongo style dates turning into scalars *after* simplifying
# only happens when simplifyDataframe=FALSE
Expand Down
6 changes: 3 additions & 3 deletions R/simplifyDataFrame.R
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
simplifyDataFrame <- function(recordlist, columns, flatten, simplifyMatrix) {
simplifyDataFrame <- function(recordlist, columns, flatten, simplifyMatrix, nesting) {

# no records at all
if (!length(recordlist)) {
Expand Down Expand Up @@ -26,8 +26,8 @@ simplifyDataFrame <- function(recordlist, columns, flatten, simplifyMatrix) {
columnlist <- transpose_list(recordlist, columns)

# simplify vectors and nested data frames
columnlist <- lapply(columnlist, simplify, simplifyVector = TRUE, simplifyDataFrame = TRUE,
simplifyMatrix = FALSE, simplifySubMatrix = simplifyMatrix, flatten = flatten)
columnlist <- lapply(columnlist, simplify, simplifyMatrix = FALSE, simplifySubMatrix = simplifyMatrix,
flatten = flatten, nesting = nesting, allowNestHere = nesting)

# check that all elements have equal length
columnlengths <- unlist(vapply(columnlist, function(z) {
Expand Down
3 changes: 3 additions & 0 deletions man/fromJSON.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.