如何映射可以具有不同类型并从另一个 class 扩展的请求对象数据?
how to map a request object data that can have different types and extends from another class?
大家好,感谢您的帮助。
假设我有:
@PUT
@Produces(MediaType.APPLICATION_JSON)
@Path("/endpoint")
public A createA(A a);
型号A:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type")
@JsonSubTypes({
@Type(value = IndividualParty.class, name = "B"),
@Type(value = CorporateParty.class, name = "C")
})
public class A {
private String id;
private String description;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
模型 B 和 C 扩展了模型 A。他们有不同的领域。
我也有请求和响应模型。使用 A 对象发出请求。
我使用 jackson 继承注解并使用 soapUI 创建 body。
所以,当我调试时,我实际上可以看到类型是 B 还是 C。
问题是,在我收到请求的 class 中,我只能访问 A 字段,我无法以这种方式将数据映射到 api,我需要访问权限到 B 和 C 字段,但请求模型只有 A 对象来执行请求,但由于 B 和 C 扩展了 A,我应该能够做到这一点,对吗?
例如:
public returnType method(CreateARequest request){}
我想在这里做的是将我在 soapUI(body) 中发出的请求映射到另一个地方的其他字段。
例如:someOtherRequest.SetName(request.getName());
此请求可以是 B 或 C,但我只能访问 A 字段...
即使我这样做 request.SetA(new B());
然后 Request.getA()。
同样的结果...
有什么想法吗???谢谢
我想我明白了。
我无法尝试,因为我现在没有远程访问权限,所以我无法确定,但我认为如果我做一个简单的向下转换就很简单:
B b = 新 B();
b = (B)request.getA();
现在我应该可以映射数据了吧?
大家好,感谢您的帮助。
假设我有:
@PUT
@Produces(MediaType.APPLICATION_JSON)
@Path("/endpoint")
public A createA(A a);
型号A:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type")
@JsonSubTypes({
@Type(value = IndividualParty.class, name = "B"),
@Type(value = CorporateParty.class, name = "C")
})
public class A {
private String id;
private String description;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
模型 B 和 C 扩展了模型 A。他们有不同的领域。
我也有请求和响应模型。使用 A 对象发出请求。
我使用 jackson 继承注解并使用 soapUI 创建 body。 所以,当我调试时,我实际上可以看到类型是 B 还是 C。
问题是,在我收到请求的 class 中,我只能访问 A 字段,我无法以这种方式将数据映射到 api,我需要访问权限到 B 和 C 字段,但请求模型只有 A 对象来执行请求,但由于 B 和 C 扩展了 A,我应该能够做到这一点,对吗? 例如:
public returnType method(CreateARequest request){}
我想在这里做的是将我在 soapUI(body) 中发出的请求映射到另一个地方的其他字段。
例如:someOtherRequest.SetName(request.getName());
此请求可以是 B 或 C,但我只能访问 A 字段... 即使我这样做 request.SetA(new B()); 然后 Request.getA()。 同样的结果...
有什么想法吗???谢谢
我想我明白了。 我无法尝试,因为我现在没有远程访问权限,所以我无法确定,但我认为如果我做一个简单的向下转换就很简单:
B b = 新 B();
b = (B)request.getA();
现在我应该可以映射数据了吧?