2017-08-07 53 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) {...}