【发布时间】:2016-08-16 06:34:51
【问题描述】:
以下代码使用带有内置 Moxy JSON 支持的 Jersey2 客户端 (v 2.22.2)。我正在尝试将一个通用的包装类编组为 JSON。正如您在下面看到的,json 属性没有按预期解组。
当我将 json 属性的类型更改为 Service 并“取消生成”类时,一切都按预期工作,但我希望能够使用泛型来做到这一点,所以我不必创建一堆需要以这种方式包装的每种类型的这些包装类。
JSONWrapper.java
public class JSONWrapper<T> implements Serializable {
private T json;
public T getJson() { return this.json; }
public void setJson (T payload) { this.json = payload; }
public JSONWrapper() {}
}
Service.java
public class Service implements Serializable {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
MyClient.java
public class MyClient {
private Client jerseyClient;
public void createService(Service item) {
Invocation.Builder invocationBuilder = buildRequest(SERVICE_PATH);
JSONWrapper<Service> wrapper = new JSONWrapper<>();
wrapper.setJson(item);
final Response response = invocationBuilder.post(Entity.entity(wrapper, MediaType.APPLICATION_JSON_TYPE));
}
public MyClient() {
this.jerseryClient = ClientBuilder.newBuilder().build();
}
public static void main(String[] args) {
MyClient myClient = new MyClient();
Service myService = new Service();
myService.setName("foo");
myClient.createService(myService);
}
}
打开日志过滤器后,我看到 Moxy 的事物编组如下所示:
{"json":"com.baz.Service@5674e1f2"}
当我希望它看起来像这样时
{"json":"{"name":"foo"}"}
【问题讨论】:
标签: java generics jersey-2.0 moxy jersey-client