我正在使用R中的httr包试图查询postcode.io API(http://postcodes.io/docs) .
我可以使用以下说明成功查询单个邮政编码: sample4 <- GET("api.postcodes.io/postcodes/EN14RF")
当我尝试查询多个邮政编码时,我变得有些不安 . postcode.io说明建议
POST https://api.postcodes.io/postcodes?q=[postcode]
其中指定了包含邮政编码数组的JSON对象 . 我有一个包含邮政编码的R矢量,我试图将其转换为JSON对象,如下所示:
a <- toJSON(a)
我的R矢量'a'是:
structure(c(4L, 5L, 3L, 6L, 1L, 2L), .Label = c("Bn14 9aw", "CR0 4BE", "E5 8HB", "EN1 4RF", "G42 8QN", "SA1 3UL"), class = "factor")
现在,当我尝试使用以下代码行查询API时:
sample4 <- POST("https://api.postcodes.io/postcodes?q=[postcode]", body = list(postcode = add1JSON))
我收到一个错误: "Invalid JSON submitted. You need to submit a JSON object with an array of postcodes or geolocation objects"
我有一种感觉,这是因为我没有提供一个数组,而是一个未命名的列表,例如我的JSON对象应如下所示:
{"postcodes":"[ \"EN14RF\", \"G428QN\", \"E58HB\", \"SA13UL\", \"Bn149aw\", \"CR04BE\" ]"}
不是这个: "[ \"EN14RF\", \"G428QN\", \"E58HB\", \"SA13UL\", \"Bn149aw\", \"CR04BE\" ]"
谁能帮我这个?我觉得这与我的 toJSON
调用有关,但一直无法在论坛或API开发者页面上找到类似的示例:(
非常感谢
马蒂
2 回答
他们编写的API文档非常糟糕 . 这似乎是此特定API调用的目的:
根据httr包的documentation,您需要将
encode
参数设置为json
,如下所示:要查看实际请求,可以使用交互式控制台中的
verbose()
参数: