RESTEasyクライアントを使用してAPIからJSON文字列を取得しています。RESTEasyクライアントでJSON応答の特定のノードを抽出します。
{
"foo1" : "",
"foo2" : "",
"_bar" : {
"items" : [
{ "id" : 1 , "name" : "foo", "foo" : "bar" },
{ "id" : 2 , "name" : "foo", "foo" : "bar" },
{ "id" : 3 , "name" : "foo", "foo" : "bar" },
{ "id" : 4 , "name" : "foo", "foo" : "bar" }
]
}
}
今、私はオブジェクト・マッピングのための唯一のitems
ノードを抽出したい:JSONペイロードは次のようになります。 JSONレスポンス本体を傍受し、ルートノードとしてitems
に変更するにはどうすればよいですか?
APIメソッドにRESTEasy proxy frameworkを使用しています。
RESTクライアントコード:
ResteasyWebTarget target = client.target("https://"+server);
target.request(MediaType.APPLICATION_JSON);
client.register(new ClientAuthHeaderRequestFilter(getAccessToken()));
MyProxyAPI api = target.proxy(MyProxyAPI.class);
MyDevice[] result = api.getMyDevice();
RESTEasyのプロキシインタフェース:
public interface MyProxyAPI {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/device")
public MyDevice[] getMyDevices();
...
}
JavaScriptオブジェクトに変換し、それをオブジェクトとして取得します。 – SaviNuclear
'items'がルートであること、あるいはメッセージの他の要素をマッピングしたくないことは重要ですか? RestEasyドキュメントを見て、JAXBプロバイダを介してJava Beanへの自動マーシャリング/アンマーシャリングを使用していますか? – dbreaux
@dbreauxはい、他の要素をマップしたくないだけです。単純化された実装コードについては、私のOPの編集を参照してください。もちろん、メッセージ本文を変更するプロバイダーを登録することはできますが、そのプロバイダーの実装がどのように見えるのだろうかと思います。 –