首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >卷曲发送json文件,用管道工在R中接收json文件

卷曲发送json文件,用管道工在R中接收json文件
EN

Stack Overflow用户
提问于 2018-08-21 08:09:32
回答 1查看 3.8K关注 0票数 4

我需要发送一个带有多个值的json文件,并使用水管工在R中接收它,我尝试过了,但它似乎不起作用,

代码语言:javascript
运行
复制
library("rjson")
#install.packages("rjson")
#* @get /predict
#* @post /predict
function(predict) {
  # Load the package required to read JSON files.
  library("rjson")
  # Give the input file name to the function.
  result <- fromJSON(file = "input_v3.json")
  print(result)
  result <- as.data.frame(result)
  write.table(result, file="testing_v3_xyz.csv", sep=",", row.names=FALSE, col.names=TRUE, append = T)
}


The curl command i used is curl -F data=@input_v3.json http://xx.xxx.xxx.xx:8000/predict

我需要发送一个ip地址,这个ip地址是运行在aws上的桌面上的Rstudio

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-21 09:10:56

如果您通过plumber发送JSON,它会透明地打开JSON包

代码语言:javascript
运行
复制
library(plumber)

#* parse JSON
#* @param a  a vector
#* @param b  a vector
#* @get /predict
#* @post /predict
function(a, b) {
  result <- data.frame(a = as.numeric(a), b = as.numeric(b))
  write.table(result, file="testing_v3_xyz.csv", sep=",",
              row.names=FALSE, col.names=TRUE, append = T)
}

在本地运行这个API,我得到:

代码语言:javascript
运行
复制
$ cat foo.json 
{ "a":["1","2","3","4","5","6","7","8" ], "b":["1","2","3","4","5","6","7","8" ] }
$ curl --data @foo.json  http://localhost:8414/predict
{}
$ cat ~/learning/stackoverflow/testing_v3_xyz.csv 
"a","b"
1,1
2,2
3,3
4,4
5,5
6,6
7,7
8,8

如果JSON的顶层是一个数组,而不是一个对象,则不能使用命名参数将数据输入函数。但是,您可以使用req$postBody访问发布的内容:

代码语言:javascript
运行
复制
library(plumber)

#* parse JSON
#* @param req  the request object
#* @get /predict
#* @post /predict
function(req) {
  result <- as.data.frame(lapply(jsonlite::fromJSON(req$postBody), unlist))
  write.table(result, file="testing_v3_xyz.csv", sep=",", row.names=FALSE, col.names=TRUE, append = T)
}

对我来说,这适用于这样的样本数据:

代码语言:javascript
运行
复制
[
  { "a":["1","2","3","4","5","6","7","8" ],
    "b":["1","2","3","4","5","6","7","8" ] },
  { "a":["1","2","3","4","5","6","7","8" ], 
    "b":["1","2","3","4","5","6","7","8" ] }
]
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51944328

复制
相关文章

相似问题

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