将JSON对象转换为Java对象

时间:2019-04-24 15:01:29

标签: java json spring-boot

我有这样的请求

   let jsonData= {};
   jsonData["className"]= className;
   jsonData["models"]= arr;
   let endPoint= "/classses?classAndModel=" + encodeURIComponent(JSON.stringfy(jsonData));
return $.ajax({
            url: host + endPoint,
            data: data,
            cache: false,
            contentType: false,
            processData: false,
            method: "POST"
        });

我想将json转换为java对象。我尝试过这个

My rest service is: 

@PostMapping(value=/classes",consumes=MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<Void> addClassAndModelMapping(ClassAndModels classAndModels){

}


public class ClassAndModels {
   ClassAndModelResult classAndModel;

   ...getter and setter...
  }
public ClassAndModelResult {
    String className;
    List<String> models;

    ...getter and setters...
 }

我得到400错误。如果我将ClassAndModelResult classAndModel行更改为String classAndResult。我得到响应,但我想要对象类型。你有什么主意吗?

2 个答案:

答案 0 :(得分:1)

代码的第一部分显示您正在将数据作为查询字符串发送。

看看https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html

但是考虑到@PostMapping,您应该在请求正文中发送该数据,并在服务器端执行类似的操作。

@PostMapping("/classes")
public ResponseEntity<Void> addClassAndModelMapping(@RequestBody ClassAndModels classAndModels){
 //
}

如Phils所说,您可以在控制器上添加GetMapping,以查看ClassAndModels如何被序列化

来源:https://spring.io/guides/tutorials/bookmarks/

P.S。对不起我的英语,我不是母语人士。

答案 1 :(得分:0)

请尝试添加@RequestParam批注或更好地将classAndModel值用作RequestBody,类似于下面的内容,并更正javascript网址中的拼写错误。

@PostMapping(value = "/classes")
    public ResponseEntity<Void> addClassAndModelMapping(@RequestBody ClassAndModels modal) {
}