r - 使用 FileInput Shiny App 上传 Json 文件
问题描述
我正在尝试构建一个闪亮的应用程序,它将 .json 文件读入表中以供查看。
我尝试使用 Json Lite 中的 DataTable 和 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 文件加载到 Shiny 中的经验,那么如果您能给我一些关于如何解决此问题的提示,那就太好了。
解决方案
使用RJSONIO
andrjson
为我工作,使用write()
and 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))
})
}
)
推荐阅读
- angular - Angular 六为@Output EventEmitter 设置初始值
- python - 使用 DX-Analytics 评估亚洲期权的正确语法是什么
- java - 如何使用杰克逊将树 json 对象映射到 List<>
- kotlin - 为什么 kscript 不喜欢分号?
- javascript - make the first part of a text area readonly
- asynchronous - 等待 IObservable 时出现 System.ArgumentNullException
- jasper-reports - JasperReports 导出的 pdf 中的字体错误
- android - 数据由异步任务加载的 ViewModel
- c# - 将 DataGridView 的特定单元格设置为“从左到右”对齐
- php - PHP如何从两个表中获取数据