0

外部ソースによって提供されるサービスに対してRESTfullJsonリクエストを行うためにgoogle-http-java-client-1.10.3-betaを使用しています。

アプリにいくつかのPOJOを構築するために、応答に含まれるJsonを解析する必要があります。

そのために、私はHttpResonseメソッド'parse as'を使用しています:

response.parseAs(SomeModel.class)

しかし、私はこの例外を受け取っています:

java.lang.IllegalArgumentException: No parser defined for Content-Type: application/json
    at com.google.api.client.http.HttpResponse.parseAs(HttpResponse.java:497)

応答されたjsonの形式は次のとおりです。[{"key":{"key": "value"、 "key": "value"}}]

角かっこで応答を処理するときに、他のJsonライブラリでいくつかの問題を経験しましたが、それがここでの問題である可能性がありますか?

何か案は?

4

1 に答える 1

1

私自身に応答して、APIでは、関連するリクエストにJsonObjectParserオブジェクトを手動で設定する必要があります。

JsonObjectParserは、GsonParser、JacksonParser、またはその他の暗黙のパーサーである可能性があります。

したがって、GsonParserをリクエストに設定するには、次のコードを使用できます。

HttpRequest setJsonParser(HttpRequest request) {
    JsonObjectParser parser = new JsonObjectParser(new GsonFactory());
    return request.setParser(parser);
}

その後、次のことができるようになります。

HttpRequest request = setJsonParser(request).execute().parseAs(SomeModel.class);

そして、すべてのPOJOが自動的に生成されます。

注: google-http-java-clientバージョンを1.11.0-betaにアップグレードしました。以前のバージョンでは、setParserを呼び出したときにHttpRequestオブジェクトが返されないため、提示されたコードを使用する場合は注意が必要です。代わりにvoidが必要になる場合があります。関数の。

于 2012-09-06T13:56:54.473 に答える