2015-04-30 25 views
0

我使用包含屬性的JSON對象從客戶端向Spring Framework後端發送HTTP請求,該屬性是另一個對象的ID。如何使用@RequestBody註釋映射JSON數據

@RequestBody不知道如何處理這個引用,並給我提供了無效的請求。

我讀過我可以爲我的課程創建一個自定義映射器。這是唯一的 解決方案還是我需要一些註釋?

如果自定義映射器是單一解決方案,您可以舉個例子嗎?

我的代碼示例:

public class Book { 

@Id 
private String id; 

@DBRef 
private Author author; 

private String name; 

//getters and setters 
} 

控制器:

... 
@RequestMapping("/book") 
private Book book(@RequestBody Book book) { 
//code 
} 
... 

的JSON通過客戶端發送:

{'name': 'something', 'author': '55422e51dcca4511fd8a0ffc'} 

如果作者是它的ID。

+1

Spring可以在開箱即用的情況下執行Json to Object編組,但您必須確保正確配置您的應用程序上下文。您需要註冊一個Json轉換器,例如MappingJacksonHttpMessageConverter。如果您使用註釋來配置應用程序,只需將EnableWebMvc添加到您的配置類,並將RestController添加到您的控制器。 –

回答

0

我會建議做下面的任一個。

  1. 將您的方法更改爲below.Use ModelAttribute來代替。

  2. 如果你仍然想使用RequestBody,那麼就像下面這樣做。

@RequestMapping( 「/書」)

private Book book(@RequestBody String body) { 

    //Now use any JSON parser(Gson or Jackson) 

    Gson gson = new Gson(); 
    Book book = gson.fromJson(body, Book.class);  
} 
0

您必須使用彈簧,並添加API GSON依賴,最後這個是必要的發送JSON對象DTO到@RequestBody。任何示例都使用api jackson,但gson用於彈簧的最後一個版本