【发布时间】:2014-10-26 02:13:36
【问题描述】:
我有一个 Spring 控制器,它可以接收帖子并且它可以工作。唯一的问题是我们的 SMS 提供商将向我们发送包含首字母大写的键的标头,例如:
{
"FromPhoneNumber":"15177754077",
"ToPhoneNumber":"17572046106",
"ResponseReceiveDate":"7/29/2014 5:25:10 AM",
"Message":"PIN 1234"
}
Spring 会抛出如下错误:
Could not read JSON: Unrecognized field "FromPhoneNumber" (class com.talksoft.spring.rest.domain.CDynePost), not marked as ignorable (4 known properties: "responseReceiveDate", "toPhoneNumber", "fromPhoneNumber", "message"])
所以,我必须有一种方法来覆盖这种行为。这是处理 CDyne 帖子的控制器方法:
@RequestMapping(method = RequestMethod.POST, value="/celltrust")
public ResponseEntity<String> cellTrustPost(@RequestBody CDynePost cDynePost) {
String message = "FAILED";
UserInteraction userInteraction = getUserInteraction(cDynePost);
boolean success = someSpringService.logMessage(userInteraction);
if (success) {
message = "OK";
return new ResponseEntity<String>(message, HttpStatus.ACCEPTED);
} else {
return new ResponseEntity<String>(message, HttpStatus.FAILED_DEPENDENCY);
}
}
这里是 CDynePost 类:
public class CDynePost {
private String FromPhoneNumber;
private String ToPhoneNumber;
private String ResponseReceiveDate;
private String Message;
public String getFromPhoneNumber() {
return FromPhoneNumber;
}
public void setFromPhoneNumber(String FromPhoneNumber) {
this.FromPhoneNumber = FromPhoneNumber;
}
public String getToPhoneNumber() {
return ToPhoneNumber;
}
public void setToPhoneNumber(String ToPhoneNumber) {
this.ToPhoneNumber = ToPhoneNumber;
}
public String getResponseReceiveDate() {
return ResponseReceiveDate;
}
public void setResponseReceiveDate(String ResponseReceiveDate) {
this.ResponseReceiveDate = ResponseReceiveDate;
}
public String getMessage() {
return Message;
}
public void setMessage(String Message) {
this.Message = Message;
}
}
我查看了 ObjectMapper,但我不确定如何在我的控制器中使用它,而且说实话,如果 Spring 可以免费编写的话,我宁愿不必编写一堆额外的类。
【问题讨论】:
-
字段可以带大写和小写吗?还是其中之一?
-
POST 中的键将大小写混合,例如:FromPhoneNumber、ToPhoneNumber、ResponseReceiveDate、Message
-
Sotirios Delimanolis 知道了,8 分钟响应时间!谢谢 StackOverflow!
标签: java json spring post jaxb