【问题标题】:convert json to pojo using jquery/spring/jackson使用 jquery/spring/jackson 将 json 转换为 pojo
【发布时间】:2012-02-29 11:21:52
【问题描述】:
$.ajax({
  cache:false,
  type: 'POST',
  url: "${saveDTO}",
  data: mySubmitData, //a stringified json object, a form converted using toObject plugin
  contentType: "application/json",
  success:  function(data) {            
    savedDialog.html( JSON.stringify(data) + "<br><br>"+mySubmitData);
  }
});

控制器是:

public @ResponseBody MyDTO saveDTO(@Valid final MyDTO myDTO,BindingResult result, Model model){
 System.out.println(myDTO.getMyField + "  " + myDTO.getSecondField;
 return new MyDTO();
}

我在对话框中得到的输出显示:

{"myField":null,"secondField":null} //new empty dto converted and returned spring

{"myField":"RU","secondField":"13-02-12"} //submitted data, a form converted to json

虽然我的 sys out 控制台输出显示两个字段都为空,但 json 没有绑定!!!为什么 ? DTO 本身只有两个带有适当 getter/setter 的私有字段

【问题讨论】:

  • 添加MyDTO的代码

标签: java json spring jackson


【解决方案1】:
//js
var mySubmitData ='{"myField":"myFieldValue", "secondField":"secondFieldValue"}';
//dto
public class MyDTO implements Serializable {

  private String myField;

  private String secondField;

  MyDTO() {} //important

  public void setMyField() { ...}

  public void setSecondField() { ... }
}
//web resource
    public @ResponseBody MyDTO saveDTO(@Valid final MyDTO myDTO,BindingResult result, Model model){
     System.out.println(myDTO.getMyField + "  " + myDTO.getSecondField;
      return  myDTO;
      //return new MyDTO(); //it's empy object if you don't have default values
    }

【讨论】:

  • 不错的尝试,你有点错过了关键点。 myDTO 字段为空,sys out 打印命令打印空。我正在重新调整一个新对象以检查正确的映射。我认为问题出在我的序列化器/反序列化器中
猜你喜欢
  • 1970-01-01
  • 2020-09-07
  • 2022-07-24
  • 2020-07-29
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
  • 2014-01-31
相关资源
最近更新 更多