2

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

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

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

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

{属性:[{nm:“SELLERS2”vt:“java.util.Map”状态:“SUCCESS”jsonValue:“{”lv”:[{“v”:{“regSiteId”:null,“userState”:null ,"userId":609},"cn":1}],"lmd":20130206211109}" } ]}

当我在浏览器上尝试该 URL 时,我得到了上面的字符串。但只要我在代码中做同样的事情。我在下面收到此异常-

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

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

4

1 回答 1

2

Jackson 正在尝试将您的 json 反序列化为新的字符串对象,但属性不匹配,例如它无法找到方法 String.setAttributes()。'out of START_OBJECT token' 是任何反序列化错误的包罗万象,堆栈跟踪中可能有更多信息。

尝试:

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

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

String str = IOUtils.toString(url);
于 2013-03-27T01:19:08.297 回答