我正在使用RESTEasy客户端从API中检索JSON字符串。该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响应主体并将其修改为具有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编辑的简化实现代码。我当然可以注册一个提供者来改变消息体,但是我想知道这样的提供者的实现是怎么样的。 –