A package of R htmlwidgets to interactively view and maybe modifylists. As of now, listviewer provides an interface to jsoneditor and react-json-view. listviewer is designed to support multiple interfaces.
jsoneditor is a really well designed JSON interactive editor by Jos de Jong. Since most R data can be represented in JSON, we can use this great JavaScript library in R.
# using the data from the jsoneditor simple example
# in R list form
library(listviewer)
jsonedit(
list(
array = c(1,2,3)
,boolean = TRUE
,null = NULL
,number = 123
,object = list( a="b", c="d" )
,string = "Hello World"
)
)
# also works with data.frames
jsonedit( mtcars )
# helpful interactive view of par
jsonedit( par() )
# meta view of the above
jsonedit(jsonedit(par()))
### experiment with topojson
library(httr)
library(pipeR)
library(listviewer)
# topojson for Afghanistan
url_path = "https://gist.githubusercontent.com/markmarkoh/8856417/raw/6178d18115d9f273656d294a867c3f83b739a951/customAfghanMap.topo.json"
url_path %>>%
GET %>>%
content( as = "text") %>>%
jsonedit
reactjson
react-json-view is another very nice JSON interactive editor. We even get copy/paste! All of the above examples should also work with reactjson.
# using the data from the jsoneditor simple example
# in R list form
library(listviewer)
reactjson(
list(
array = c(1,2,3)
,boolean = TRUE
,null = NULL
,number = 123
,object = list( a="b", c="d" )
,string = "Hello World"
)
)
Shiny example
listviewer works with Shiny but the implementation is crude and likely to change for jsonedit while reactjson integration is much better. If you really want to use jsonedit with Shiny, I would recommend debouncing the change callback. Here are examples with each.
library(shiny)
library(listviewer)
# put some data in environment so it will show up
data(mtcars)
ui <- shinyUI(
fluidPage(
jsoneditOutput( "jsed" )
)
)
server <- function(input,output){
output$jsed <- renderJsonedit({
jsonedit(
jsonlite::toJSON(mtcars, auto_unbox = TRUE, data.frame = "rows")
,"onChange" = htmlwidgets::JS('function(after, before, patch){
console.log( after.json )
}')
)
})
}
runApp( list( ui = ui, server = server ) )
library(shiny)
library(listviewer)
# put some data in environment so it will show up
data(mtcars)
ui <- shinyUI(
fluidPage(
reactjsonOutput( "rjed" )
)
)
server <- function(input,output){
output$rjed <- renderReactjson({
reactjson( jsonlite::toJSON(mtcars, auto_unbox = TRUE, data.frame = "rows") )
})
observeEvent(input$rjed_edit, {
str(input$rjed_edit, max.level=2)
})
}
runApp( list( ui = ui, server = server ) )
code of conduct
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
listviewer
A package of R htmlwidgets to interactively view and maybe modify
lists. As of now,listviewerprovides an interface tojsoneditorandreact-json-view.listvieweris designed to support multiple interfaces.install
CRAN
Development Version
jsoneditor
jsoneditoris a really well designedJSONinteractive editor by Jos de Jong. Since mostRdata can be represented inJSON, we can use this greatJavaScriptlibrary inR.See the above interactive view of par for yourself.
I got this idea courtesy of @jasonpbecker on Twitter.
htmlwidgetsdependencies are defined byYAML. Let’s see the dependencies forjsonedit.How about
topojson?reactjson
react-json-viewis another very niceJSONinteractive editor. We even get copy/paste! All of the above examples should also work withreactjson.Shiny example
listviewerworks withShinybut the implementation is crude and likely to change forjsoneditwhilereactjsonintegration is much better. If you really want to usejsoneditwithShiny, I would recommenddebouncingthechangecallback. Here are examples with each.code of conduct
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.