2017-03-04 50 views
1

我需要使用水管工包来自R发送响应以下格式如何使用管道工[R

{ 
    "status": "SUCCESS", 
    "code": "200", 
    "output": { 
    "studentid": "1001", 
    "name": "Kevin" 
    } 
} 

发送JSON响应,但我得到以下格式

[ 
    "{\n \"status\": \"SUCCESS\",\n \"code\": \"200\",\n \"output\": {\n \"studentid\": \"1001\",\n \"name\": \"Kevin\"\n }\n}" 
] 

请帮我格式化这个JSON正确

我的代码

#* @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) 
} 
+1

这是正确的格式,请参阅cat(your_string) – mtoto

回答

1

我增加了一个unboxedJSON序列化程序到开发版的水管工。取决于将来读取的时间,该序列化程序可能已发布到CRAN,甚至可能是现在的默认序列化程序(我仍在辩论)。

但现在,您可以安装从GitHub(devtools::install_github("trestletech/plumber"))的开发版本,则@serializer unboxedJSON注释添加到您的功能,像这样:

#* @post /sum 
#* @serializer unboxedJSON 
addTwo <- function(){ 
    list(status = "SUCCESS", code = "200",output = list(studentid = "1001", name = "Kevin")) 

} 

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

#* @get/
function(res){ 
    res$body <- "I am raw" 
    res 
} 

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

0

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

这应该工作。

addTwo <- function(){ 
    x <- list(status = "SUCCESS", code = "200",output = list(studentid = "1001", name = "Kevin")) 
    return (x) 
}