2016-10-25 36 views
3

對象我有SpringBoot應用程序與依賴關係:春天開機自動JSON在控制器

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-jersey</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 

我有我的控制器的方法如下:

@RequestMapping(value = "/liamo", method = RequestMethod.POST) 
@ResponseBody 
public XResponse liamo(XRequest xRequest) { 
    ... 
    return something; 
} 

我從送一個JSON對象我通過AJAX與一些XRequest類型對象的字段(這是一個普通的POJO沒有任何註釋)的HTML。然而,我的控制器方法沒有將我的JSON構造成對象,並且它的字段爲空。

我想在我的控制器上進行自動反序列化?

+0

可能是'@ RequestBody'註釋你的'xRequest'參數:http://stackoverflow.com/questions/11291933/requestbody-and-responsebody-annotations-in-spring - 順便說一句,如果您使用spring-mvc作爲控制器,則不需要'spring-boot-starter-jersey'。 – zapl

+0

您缺少'@ RequestBody'像@zapl注意到的那樣,如果您要發送JSON,我還會將'consumes =「application/json」'添加到'@ RequestMapping'。 – VladoDemcak

+0

答案就是這樣。缺少RequestBody,謝謝!你能把它寫成接受它的答案嗎? – kamaci

回答

4

春天開機自帶傑克遜出的即裝即用,這將照顧未編組JSON請求主體的,以Java對象

您可以使用@RequestBody Spring MVC的註解未馬歇爾JSON字符串到Java對象...例如。

@RestController 
public class CustomerController { 
    //@Autowired CustomerService customerService; 

    @RequestMapping(path="/customers", method= RequestMethod.POST) 
    @ResponseStatus(HttpStatus.CREATED) 
    public Customer postCustomer(@RequestBody Customer customer){ 
     //return customerService.createCustomer(customer); 
    } 
} 

註釋與相應的JSON字段名@JsonProperty您的實體部件的元件。

public class Customer { 
    @JsonProperty("customer_id") 
    private long customerId; 
    @JsonProperty("first_name") 
    private String firstName; 
    @JsonProperty("last_name") 
    private String lastName; 
    @JsonProperty("town") 
    private String town; 
} 
+0

鏈接已損壞。 – VedX

+0

對不起。該問題本身現在處於刪除狀態。刪除了鏈接,無論如何都複製粘貼了大部分內容。感謝您指出。 –

+0

太棒了,謝謝。 –