保存对象返回列表无法反序列化错误

时间:2018-06-29 16:11:21

标签: javascript java spring

我用弹簧靴和百里香叶 我尝试保存对象列表。

我的对象。

public class GECPD {
    public Integer id;
    public String name;
    public List<GEPD> geL;
    public Integer giId;     
    public Integer sGEId;
}

在我的控制器中,我返回一个对象列表

  Set<GECPD> gECL = new HashSet<>();
  ...
  model.addAttribute("gECL", new ArrayList<>(gECL));

数据正确显示

<input name="id[0]" type="hidden" value="136">
<select name="sGEId[0]" class="form-control">
 <option value="246">01</option>
    <option value="391">00</option>
</select>

我的控制器

  @PutMapping(value = "/{id}/ge")
  public ResponseEntity updateGE(@PathVariable("id") Integer id, @RequestBody List<GECPD> dto) {
        ....
        return new ResponseEntity(dto,HttpStatus.OK);
  }

function saveGroundElement(){

var form = transForm.serialize('#gEForm');
var url = "/rest/spi/"  + $("#spi").val() + "/ge";
form = JSON.stringify(form);
jQuery.ajax({
    type: "put",
    url: url,
    contentType: "application/json",
    data: form,
    success: function (data, status, jqXHR) {
    },
    error: function (jqXHR, status) {

        checkError(jqXHR);
    }
});

}

数据已发送

{"id":["136"],"sGEId":["246"]}

我得到这个结果

  

Erreur:{“ timestamp”:“ 2018-06-29T15:36:58.427 + 0000”,“ status”:   400,“错误”:“错误请求”,“消息”:“ JSON解析错误:无法   在START_OBJECT中反序列化java.util.ArrayList的实例   令牌嵌套异常为   com.fasterxml.jackson.databind.exc.MismatchedInputException:无法   在START_OBJECT中反序列化java.util.ArrayList的实例   令牌\ n位于[来源:(PushbackInputStream);行:1,列:1]“,   “ path”:“ / rest / spi / 1 / ge”}

有什么主意吗?

1 个答案:

答案 0 :(得分:1)

您的前端端还可以...您需要修改服务器端

@PutMapping(value = "/{id}/ge")
  public ResponseEntity updateGE(@PathVariable("id") Integer id, @RequestBody GECPDList dto) {
        ....
        return new ResponseEntity(dto,HttpStatus.OK);
  }

在GECPDS中

public GECPDList class{
    private List<GECPD> gecpds;
}