我试图在我的一个类中加载一个对象param,但是无法使它工作。外部对象DeviceInfo按预期加载,但MobileDeviceData并不是因为它位于Transaction对象内。
@RequestMapping(value="/mobile/device", method = RequestMethod.PUT)
public ResponseEntity<Object> flagDevice (@RequestBody List<DeviceInfo> deviceInfoList, @RequestHeader(value=IN_AUTH_CUSTOMER_GUID) String inAuthIdentity) {
... code here ...}
为了清晰起见,下面是我简化的@Entity类:
@Entity
public class DeviceInfo implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
private MobileDeviceReasonCode reasonCode;
@JsonProperty("mobile-data")
private MobileDeviceData mobileDeviceData;
public void setMobileDeviceData(MobileDeviceData mobileDeviceData) {
this.mobileDeviceData = mobileDeviceData;
}
}我的MobileDeviceData类如下所示:
@Entity
public class MobileDeviceData implements Serializable {
@Id
private long deviceInfoId;
@JsonProperty("resilient_id")
private String resilientId;
public long getResilientId() {
return resilientId;
}
public void setResilientId(long resilientId) {
this.resilientId = resilientId;
}
}传入的JSON:
[
{
"reasonCode": "CHARGEBACK",
"activityDate": 1447952509,
"inPermId": "CUSTOMER InPermId",
"transaction": {
"mobile-data": {
"resilient_id": 123
}
}
}
]有什么方法可以让它加载MobileDeviceData对象,而不必创建一个除了MobileDeviceData类以外什么都不包含的Transaction对象呢?我希望有一些方法可以修改@JsonProperty,以通知它该对象位于Transaction对象内。
另外,修改JSON也不是一个选项。我已经问过了。
发布于 2015-11-20 09:12:31
请检查this所以线程,并看到两个答案。我是在建议第二个。它将适合您的需要,但它是一个过于自定义的解决方案-尽管如此,创建您自己的注释和实现,代码看起来非常干净,没有虚拟包装对象。我认为这是一个非常好和优雅的解决方案。
https://stackoverflow.com/questions/33811438
复制相似问题