如何配置Jackson json解串器,以使特殊字符将“ ##”,“#null”,“-”设置为null

例如:
    说我的json是

{ "userId":"kp","fname":"k","lname":"p","mname":"##", rndNum:"-"}


Java类是

class User{
    private String userId;
    private String fname;
    private String lname;
    private String mname;
    private Integer rndNum;

    //getters/ and setters
}


我希望输出是

user.getUserId() = kp
user.getMname() = null
user.getRndNum() = null

最佳答案

最简单的方法是为此使用构造函数和验证程​​序。例如

public static String validate(String name) {
    if (name != null && !name.isEmpty() && (name.charAt(0) == '#' || name.charAt(0) == '-')) {
        return null;
    }
    return name;
}

class User {
    User(String userId, String fname, String lname, String mname) {
        this.userId = validate(userId);
        this.fname = validate(fname);
        this.lname = validate(lname);
        this.mname = validate(mname);
    }


我也认为这可以适当地分隔功能。杰克逊(Jackson)代码和注释应该处理JSON中发生的任何反序列化。您的班级应该知道用于初始化的值是否有效,无论它们来自何处。

10-07 19:24
查看更多