遵循页面http://plumber.trestletech.com/上的示例
我写了我的文件
#* @post /test
test <- function(){
list(speech='aa',source='bb',displayText='cc')
}我在上面运行水管工代码,将int转换成API。
library(plumber)
r <- plumb("~/Work/myfile.R")
r$run(port=8000)现在,当我在它上执行一个POST请求时,我使用
curl -XPOST 'localhost:8000/test
-> {"speech":["aa"],"source":["bb"],"displayText":["cc"]}但我希望去掉方括号。在简单的toJSON调用中,它可以使用auto_unbox=TRUE完成,但我如何在水管工中完成。如何编写自定义序列化程序并在上述代码中使用?
发布于 2017-02-01 08:23:15
我设计了添加自定义序列化程序的过程。假设我们想为JSON定制一个序列化程序,并将其命名为"custom_json“myfile.R。
#* @serializer custom_json
#* @post /test
test <- function(){
list(speech='aa',source='bb',displayText='cc')
}当运行水管工代码的时候
library(plumber)
library(jsonlite)
custom_json <- function(){
function(val, req, res, errorHandler){
tryCatch({
json <- jsonlite::toJSON(val,auto_unbox=TRUE)
res$setHeader("Content-Type", "application/json")
res$body <- json
return(res$toResponse())
}, error=function(e){
errorHandler(req, res, e)
})
}
}
addSerializer("custom_json",custom_json)
r <- plumb("~/Work/myfile.R")
r$run(port=8000)现在,当我在它上执行一个POST请求时,我使用
curl -XPOST 'localhost:8000/test
-> {"speech":"aa","source":"bb","displayText":"cc"}https://stackoverflow.com/questions/41965032
复制相似问题