使用FileInput Shiny App上传Json文件

时间:2019-05-20 18:57:19

标签: r json shiny

我正在尝试构建一个闪亮的应用程序,该应用程序会将.json文件读入表进行查看。

我尝试使用DataTable和Json Lite中的fromJson函数读取数据并将其输出

 options(shiny.maxRequestSize=30*1024^2) 

library(shiny)
library(jsonlite)
library(tidyverse)
library(DT)
library(rjson)



# Define UI for application that draws a histogram
ui <- fluidPage(
   # Application title
   titlePanel("Json Test"),

   # Sidebar with a slider input for number of bins 
   sidebarLayout(
      sidebarPanel(
         fileInput("Json", "Choose Json File",
                   multiple = FALSE,
                   accept = c(".json"))
      ),

      # Show a plot of the generated distribution
      mainPanel(
         tableOutput("data")
      )
   )
)


server <- function(input, output, session) {

  fill <- reactive({
    df <- jsonlite::fromJSON(input$Json)
    Branch_10 <- df$branch_items$issue_items[[1]]
    return(Branch_10)
  })

   output$data <- renderDataTable({
    fill()
   })


}



# Run the application 
shinyApp(ui = ui, server = server)

文件看起来好像正在被读取,但是没有格式化表格。如果您有将.json文件加载到闪亮文件的经验,那么如果可以给我一些解决方法的提示,那就太好了。

1 个答案:

答案 0 :(得分:1)

使用RJSONIOrjson对我有用write()fromJSON()。要将文件上传到Shinyapp,您可以通过input$Json$datapath提取文件路径。

可复制的示例:

library(shiny)
library(RJSONIO)
library(rjson)
library(DT)
write(toJSON(mtcars), "test.json")

shinyApp(
  ui = fluidPage(
    fileInput("Json", "Choose Json File",
              multiple = FALSE,
              accept = c(".json")),
    DTOutput('tbl')
  ),
  server = function(input, output) {
    output$tbl = renderDT({
      req(input$Json)
      as.data.frame(fromJSON(file = input$Json$datapath))
    })
  }
)