我正在尝试构建一个闪亮的应用程序,该应用程序会将.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文件加载到闪亮文件的经验,那么如果可以给我一些解决方法的提示,那就太好了。
答案 0 :(得分:1)
使用RJSONIO
和rjson
对我有用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))
})
}
)