gpt4 book ai didi

json - R 管道工 JSON 序列化程序 auto_unbox

转载 作者:行者123 更新时间:2023-12-01 08:24:02 25 4
gpt4 key购买 nike

按照页面上的例子http://plumber.trestletech.com/

我写了 myfile.R 作为

#* @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 来完成,但我如何在管道工中做到这一点。
如何编写自定义序列化程序并在上面的代码中使用它?

最佳答案

我想出了添加自定义序列化程序的过程。
假设我们想为 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"}

关于json - R 管道工 JSON 序列化程序 auto_unbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41965032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com