在POST请求中使用JSON数组

时间:2016-08-08 13:24:18

标签: json r http post httr

我正在编写API wrapper以使用httr包查询英国邮政编码,当我使用GET请求时,一切正常。我在使用POST请求时略有丢失。

以下是API documentation所说的内容:

  

接受包含邮政编码数组的JSON对象。返回一个列表   匹配邮政编码和各自的可用数据。

     

最多可接受100个邮政编码。

     

POST https://api.postcodes.io/postcodes?q=[postcode]

     

发布数据

     

此方法需要一个包含邮政编码数组的JSON对象   被张贴。 E.g。

     

{" postcodes" :[" PR3 0SG"," M45 6GN"," EX165BL"]}

我尝试了以下内容:

library(httr)

pc_json <- '{
  "postcodes" : ["PR3 0SG", "M45 6GN", "EX165BL"]
}'

r <- POST(paste0("https://api.postcodes.io/postcodes?q=", pc_json, encode = "json"))

但它返回了这个:

  

$ status 1 400

     

$ error 1&#34;提交的JSON无效。您需要提交一个JSON对象   带有一系列邮政编码或地理定位对象&#34;

当我修剪数组并使用它时会发生同样的情况:

r <- POST("https://api.postcodes.io/postcodes?q=EX165BL")
content(r)

我读过类似的帖子herehere,但他们并没有让我的问题更容易解决。

任何想法如何解决?

1 个答案:

答案 0 :(得分:6)

您几乎只需要将邮政编码格式化为列表并使用select to_char(to_timestamp('08/01/2016 09:16:47.000000000 AM', 'MM/DD/YYYY HH:MI:SS.FF AM'),'MM/DD/YYYY HH:MI:SS AM') from dual; 的body参数然后编码为select to_char(to_timestamp('08/01/2016 09:16:47.000000000 PM', 'MM/DD/YYYY HH:MI:SS.FF AM'),'MM/DD/YYYY HH:MI:SS AM') from dual;

POST