无法使用R POST()反序列化实例

时间:2019-06-25 11:30:46

标签: r json httr jsonlite

我正在尝试使用R中的POST()函数获取queryID。只要我仅使用简单的JSON,它就可以很好地工作

library(httr)
library(jsonlite)

base_json <- paste('
{
  "segment" : "WHG_M"
}
')

id <- POST("url", 
           body = fromJSON(base_json), 
           encode = "json", 
           authenticate(username,password, type = "basic"))

但是,当我尝试合并其他条件时,即:

base_json <- paste('
{
  "segment" : "WHG_M",
  "administrativeSpatialFilter" : {
    "municipalityCodes" : [ 11000000 ]
  }
}
')

我在POST()时遇到以下错误:

Cannot deserialize instance of `java.util.ArrayList` 
out of VALUE_NUMBER_INT token

fromJSON(base_json)

$segment
[1] "WHG_M"

$administrativeSpatialFilter
$administrativeSpatialFilter$municipalityCodes
[1] 11000000

有人知道如何解决该问题吗?

1 个答案:

答案 0 :(得分:0)

该异常包含“ java.util。”,它清楚地表明该异常是由用Java编写的REST服务抛出的。

我猜这个JSON     {       “ segment”:“ WHG_M”,       “ administrativeSpatialFilter”:{         “ municipalityCodes”:[11000000]       }     }

由您的R-Client方法转换为

{
  "segment" : "WHG_M",
  "administrativeSpatialFilter" : {
    "municipalityCodes" : 11000000
  }
}

这不再是列表,并破坏了服务器上的JSON-Parser。

即使只有一个元素,您也必须将JSON-Encoder保持JSON-list-structure。