2014-09-01 88 views
4

我有一个弹簧控制器,需要发布和它的作品。唯一的问题是,我们的短信提供商将会向我们发送包含带有大写首字母键头,例如:Spring @RequestBody覆盖

{ 
"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将免费提供,我宁愿不必写一堆额外的类。

+0

字段可以是大写还是小写?或者只是其中之一? – 2014-09-01 21:05:40

+0

在POST中的键将混合大小写,如:FromPhoneNumber,ToPhoneNumber,ResponseReceiveDate,消息 – JonasJSchreiber 2014-09-01 21:13:07

+0

Sotirios Delimanolis得到它,8分钟响应时间!谢谢StackOverflow! – JonasJSchreiber 2014-09-01 21:22:56

回答

3

只需用@JsonProperty注释您的字段,获取者或设置者,指定将出现在JSON中的确切名称。例如

@JsonProperty("FromPhoneNumber") 
private String FromPhoneNumber; 
+0

我的男人!这就是答案! – JonasJSchreiber 2014-09-01 21:16:47