相关疑难解决方法(0)

杰克逊,用私有字段反序列化类和没有注释的arg构造函数

可以使用私有字段和自定义参数构造函数反序列化为不使用注释而不使用Jackson修改类的类?

我知道在使用这种组合时杰克逊有可能:1)Java 8,2)用"-parameters"选项编译,3)参数名称与JSON匹配.但是在没有所有这些限制的情况下,默认情况下也可以在GSON中使用.

例如:

public class Person {
    private final String firstName;
    private final String lastName;
    private final int age;

    public Person(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

    public static void main(String[] args) throws IOException {
        String json = "{firstName: \"Foo\", lastName: \"Bar\", age: 30}";

        System.out.println("GSON: " + deserializeGson(json)); // works fine
        System.out.println("Jackson: " + deserializeJackson(json)); // error
    }

    public static Person deserializeJackson(String json) throws IOException {
        ObjectMapper mapper = …
Run Code Online (Sandbox Code Playgroud)

java json jackson jackson2 jackson-databind

15
推荐指数
2
解决办法
3万
查看次数

标签 统计

jackson ×1

jackson-databind ×1

jackson2 ×1

java ×1

json ×1