2017-03-04 72 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) 
}