使用ObjectMapper的org.codehaus.jackson.map.JsonMappingException

时间:2013-03-27 00:54:41

标签: java jackson

我正在尝试使用Object Mapper调用我的REST服务。

url = new URL("http://phx5qa01c-8539.host.com:8080/bservice/BService/v1/getSimpleString");

String str = mapper.readValue(url, String.class);

那个网址会给我这个字符串 -

  

{attributes:[{nm:“SELLERS2”vt:“java.util.Map”状态:   “成功”jsonValue:   “{” LV “:[{” V “:{” regSiteId “:NULL,” userState “:NULL,” 用户id “:609},” CN “:1}],” LMD “:20130206211109}”   }]}

当我在浏览器上尝试该URL时,我将返回上面的String。但是只要我在代码中做同样的事情。我在下面得到了这个例外 -

  

org.codehaus.jackson.map.JsonMappingException:无法反序列化   START_OBJECT标记中的java.lang.String实例

任何人都可以帮我解决这个问题,为什么我会在下面得到这个例外。

1 个答案:

答案 0 :(得分:2)

杰克逊试图将你的json反序列化为一个新的字符串对象,但属性不匹配,例如它找不到方法String.setAttributes()。 '出于START_OBJECT标记'是任何反序列化错误的全部内容,堆栈跟踪可能会有更多信息。

尝试:

Map myMap = mapper.readValue(url, Map.class);

或者如果您真的想要字符串,请不要使用Jackson只需使用标准java代码或commons-io将字符串读取到字符串:

String str = IOUtils.toString(url);