我正在尝试将一个Object param加载到我的一个类中但无法使其工作。外部对象sonar.web.javaAdditionalOpts=-agentlib:jdwp=transport=dt_socket,suspend=y,server=y,address=9001
按预期加载,但DeviceInfo
不会因为它位于MobileDeviceData
对象内而加载。
Transaction
}
为清楚起见,这是我简化的@Entity类:
@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 ...
我的MobileDeviceData类看起来像这样:
@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;
}
}
JSON进来了:
@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;
}
}
有没有我可以加载[
{
"reasonCode": "CHARGEBACK",
"activityDate": 1447952509,
"inPermId": "CUSTOMER InPermId",
"transaction": {
"mobile-data": {
"resilient_id": 123
}
}
}
]
对象而不必创建一个MobileDeviceData
对象,除了Transaction
类之外什么都没有?我希望有一些方法可以修改MobileDeviceData
以通知它该对象在@JsonProperty
对象内。
此外,修改JSON不是一种选择。我已经问过了。
答案 0 :(得分:1)
请检查this SO帖子并查看两个答案。我建议第二个。它将满足您的需求,但它是一个过于自定义的解决方案 - 创建自己的注释和实现,尽管如此,代码将看起来非常干净,没有虚拟包装器对象。我认为这是一个非常好的和优雅的解决方案。