2

ObjectMapperを使用してRESTサービスを呼び出そうとしています。

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

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

そして、そのURLは私にこの文字列を返します-

{属性:[{nm: "SELLERS2" vt: "java.util.Map" status: "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 に答える