首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用plumber R发送json响应

如何使用plumber R发送json响应
EN

Stack Overflow用户
提问于 2017-03-04 14:04:08
回答 2查看 4.5K关注 0票数 5

我需要发送响应从R使用管道工包在下面的格式

代码语言:javascript
复制
{
  "status": "SUCCESS",
  "code": "200",
  "output": {
    "studentid": "1001",
    "name": "Kevin"
  }
}

但是我的格式越来越低了

代码语言:javascript
复制
[
  "{\n  \"status\": \"SUCCESS\",\n  \"code\": \"200\",\n  \"output\": {\n    \"studentid\": \"1001\",\n    \"name\": \"Kevin\"\n  }\n}"
]

请帮助我正确地格式化这个json

我的代码

代码语言:javascript
复制
#* @post /sum
addTwo <- function(){
  library(jsonlite)
  x <- list(status = "SUCCESS", code = "200",output = list(studentid = "1001", name = "Kevin"))
  output<-toJSON(x,pretty = TRUE, auto_unbox = TRUE)
  return (output)
}
EN

回答 2

Stack Overflow用户

发布于 2017-05-21 10:29:38

我在plumber的开发版本中添加了一个unboxedJSON序列化程序。根据将来何时读取,该序列化程序可能已经发布到CRAN,甚至可能是现在的默认序列化程序(我仍在争论)。

但是现在,您可以从GitHub (devtools::install_github("trestletech/plumber"))安装开发版本,然后将@serializer unboxedJSON注释添加到函数中,如下所示:

代码语言:javascript
复制
#* @post /sum
#* @serializer unboxedJSON
addTwo <- function(){
  list(status = "SUCCESS", code = "200",output = list(studentid = "1001", name = "Kevin"))

}

仅供参考,如果你想强制管道工返回你直接提供的一些文本,你应该能够在res上设置$body元素,然后从函数返回res对象。

代码语言:javascript
复制
#* @get /
function(res){
  res$body <- "I am raw"
  res
}

它将在其响应中返回未格式化、未序列化的文本I am raw

票数 9
EN

Stack Overflow用户

发布于 2017-07-09 19:37:04

只需删除toJSON()包装器即可。Plumber已经做了JSON序列化,所以你可以通过添加一个toJSON函数来做两次。

这应该是可行的。

代码语言:javascript
复制
 addTwo <- function(){
  x <- list(status = "SUCCESS", code = "200",output = list(studentid = "1001", name = "Kevin"))
  return (x)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42592738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档