2017-08-07 51 views
-4

我有如下的Json。如何在彈簧啓動時接收json參數

{"person":[{"name":"asd","age":"22"},{"name":"asd","age":"22"}]} 

,但它也可能是:

{"person":[{"name":"asd","age":"22"},{"name":"asd","age":"22"}],"city":["NewYork"],"student":"false"} 

我怎樣才能得到它在春季啓動控制器?

回答

2

您應該使用@RequestBody註釋。

@RequestMapping("/api/example") 
public String example(@RequestBody String string) { 
    return string; 
} 

稍後,添加一些驗證和業務邏輯。

您可以使用http://www.jsonschema2pojo.org/生成自定義類。一旦生成,您可以期待您的自定義類而不是String

有關更多說明,我覺得this tutorial有趣。

+0

我問過後,我發現這是一個愚蠢的問題。謝謝你仍然回答這個問題。並感謝每一次點擊「投票」傢伙,這讓我意識到這是一個糟糕的問題。 –

+0

英語不是我的母語。我的表達能力有限。 –

+0

@ NBsaw-這個問題並沒有顯示你所做的努力。在問這裏之前,我建議閱讀[問]和[mcve] - 他們幫助提出很好的問題。 – xenteros

-2

1)您需要定製您的其餘控制器。例如

@Autowired 
UserService userService; 

@RequestMapping(value = "/user/", method = RequestMethod.GET) 
public ResponseEntity<List<User>> listAllUsers() { 
    List<User> users = userService.findAllUsers(); 
    if (users.isEmpty()) { 
     return new ResponseEntity(HttpStatus.NOT_FOUND); 
    } 
    return new ResponseEntity<List<User>>(users, HttpStatus.OK); 
} 

2)定義你的POJO:例如

public class User { 

String name; 
String age; 

public User(String name, String age) { 
    this.name = name; 
    this.age = age; 
} 

public String getName() { 
    return name; 
} 

public String getAge() { 
    return age; 
} 
} 

3)定義服務

@Service 公共類UserService {

public List<User> findAllUsers(){ 
    // Those are mock data. I suggest to search for Spring-data for interaction with DB. 
    ArrayList<User> users = new ArrayList<>(); 
    User user = new User("name", "5"); 
    users.add(user); 
    return users; 
    } 
} 

您可以按照this教程。如果你只想發送一個json消息給一個spring啓動休息控制器,你可以使用一個像postman這樣的休息客戶端。

+0

儘管此鏈接可能回答問題,但最好在此處包含答案的基本部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/16958352) –

0

您可以像下面那樣接收json,Spring Boot會將您的json轉換爲您定義的模型(例如下面的「Comment」模型)。

@RequestMapping(value = "/create", method = RequestMethod.POST) 
public ResultModel createComment(@RequestBody Comment comment) {...}