我使用 Plumber ( https://github.com/trestletech/plumber ) 为 R 源代码创建了一个 Web API,其目的是将 json_string 作为输入处理,并将其转换为 R 数据帧。
代码:
#* @param data
#* @post /predict
jsonToDF <- function(data) {
library(jsonlite)
dat <- fromJSON(data)
}
从上面的代码可以看出,我使用的是库jsonlite
和fromJSON()
方法。
然后我通过以下方式在本地公开服务:
library(plumber)
r <- plumb("code.R")
r$run(port=54321)
我使用了 curl 请求:
curl -v -i -X POST -H "Content-Type: application/json" --data "testData='{\"a\":\"b\"}'" http://localhost:54321/predict
发送一个 json_string ( {"a":"b"}
) 但这是我得到的错误:
<simpleError: lexical error: invalid char in json text.
'{"a":"b"}'
(right here) ------^
我使用 R 控制台仔细检查了输入的有效性,但没有收到相同的错误消息。
> z <- fromJSON('{"a":"b"}')
> z
$a
[1] "b"
谁能向我解释为什么它可以在 R 控制台中工作,但不能作为 curl 请求的数据字段中的输入?非常感谢!