spring post jackson的反序列化需要无参构造函数

2019-09-26 19:03:33

引言

在测试spring boot 的post传递实体类的过程中发现了一个反向序列化的异常。


异常

JSON parse error: Cannot construct instance of `com.**` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.**` (although at least one Creator exists): cannot deserialize from Object value (no delegate- or property-based Creator)

 at [Source: (PushbackInputStream); line: 2, column: 2]]

 


解决方案

在实体类中添加无参构造函数。


 


原因

jackson的反序列化需要无参构造函数,而我在实体类中添加了有参数的构造函数。


在实体类中添加无参构造函数即可。


 


修改前

 

import com.baomidou.mybatisplus.annotation.TableField;

import com.baomidou.mybatisplus.annotation.TableId;

import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;

 

import java.io.Serializable;

 

@Data

@TableName("user")

public class User implements Serializable {

 

    @TableId("id")

    private String id;

    @TableField("user_id")

    private String userId;

    @TableField("device_id")

    private String deviceId;

 

    public User(String deviceId) {

        this.deviceId= deviceId;

    }

}

修改后

 

import com.baomidou.mybatisplus.annotation.TableField;

import com.baomidou.mybatisplus.annotation.TableId;

import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;

 

import java.io.Serializable;

 

@Data

@TableName("user")

public class User implements Serializable {

 

    @TableId("id")

    private String id;

    @TableField("user_id")

    private String userId;

    @TableField("device_id")

    private String deviceId;

 

    public User() {

        super();

    }

 

    public User(String deviceId) {

        this.deviceId= deviceId;

    }

}

 



  • 2021-01-12 22:05:56

    ios 代码写Button小结

    本文实现的是一个不用拖控件,而是用代码写出一个按钮,然后点击弹出一个警告信息,有人问那么好的IB工具不用却去苦逼的写代码呢?因为IB高度集成开发工具,拖出的控件帮我省了很大麻烦,这个过程农民工也可以干,但是作为初学者,IB是个比较高层的东西,我们是不是应该了解一下IB底层的东西呢,如果一味追求方便快捷,哪天突然有人问怎么用代码写出来,咱岂不是要被鄙视了;所以吧,初学者不要学懒,多写代码提高我们的编程能力,当我们在开发项目或者在公司工作去用IB,来帮我们节省时间提高效率;

  • 2021-01-12 22:13:23

    UINavigationController和UIScrollView滚动-92

    如果navigation bar或者toolbar不透明,view controller就无法让它的view全屏显示。换句话说,如果不希望view controller里面的view全屏显示,就应该把navigation bar设为不透明。

  • 2021-01-12 22:15:46

    NSLog各种打印占位符

    打印CGRect : NSLog(@"%@",NSStringFromCGRect(someCGRect)); 或者CFShow(NSStringFromCGRect(someCGRect));