Я использовал Plumber (https://github.com/trestletech/plumber) для создания веб-API для исходного кода R, целью которого является обработка json_string в качестве входных данных и преобразование его в фрейм данных R.
Rcode:
#* @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? Большое спасибо!