我正在尝试使用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实例
任何人都可以帮我解决这个问题,为什么我会在下面得到这个例外。
答案 0 :(得分:2)
杰克逊试图将你的json反序列化为一个新的字符串对象,但属性不匹配,例如它找不到方法String.setAttributes()。 '出于START_OBJECT标记'是任何反序列化错误的全部内容,堆栈跟踪可能会有更多信息。
尝试:
Map myMap = mapper.readValue(url, Map.class);
或者如果您真的想要字符串,请不要使用Jackson只需使用标准java代码或commons-io将字符串读取到字符串:
String str = IOUtils.toString(url);