Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @JsonCreator和mixin via模块不适用于第三方类_Java_Json_Jackson_Jackson Modules - Fatal编程技术网

Java @JsonCreator和mixin via模块不适用于第三方类

Java @JsonCreator和mixin via模块不适用于第三方类,java,json,jackson,jackson-modules,Java,Json,Jackson,Jackson Modules,我正在尝试反序列化java.net.HttpCookie,它没有默认的无参数构造函数,我得到: org.codehaus.jackson.map.JsonMappingException:找不到类型[简单类型,类java.net.HttpCookie]:的合适构造函数,无法从JSON对象实例化(需要添加/启用类型信息?) 在[来源:java.io。StringReader@5a395674;行:1,列:35 这是jackson mapper asl 1.9.13版 我通过getDeseriali

我正在尝试反序列化java.net.HttpCookie,它没有默认的无参数构造函数,我得到: org.codehaus.jackson.map.JsonMappingException:找不到类型[简单类型,类java.net.HttpCookie]:的合适构造函数,无法从JSON对象实例化(需要添加/启用类型信息?) 在[来源:java.io。StringReader@5a395674;行:1,列:35

这是jackson mapper asl 1.9.13版

我通过getDeserializationConfig和using module找到并尝试使用他们的解决方案

abstract class HttpCookieMixIn {
    @JsonCreator
    public HttpCookieMixIn(@JsonProperty("name") String name, @JsonProperty("value") String value) {
        logger.info("Mixin called!");
    }
}

public class MyModule extends SimpleModule {
    public MyModule() {
        super("ModuleName", new Version(0,0,1,null));
    }

    @Override
    public void setupModule(SetupContext context) {
        context.setMixInAnnotations(java.net.HttpCookie.class, HttpCookieMixIn.class);
        logger.info("Set mixin annotation");
    }
}
在服务器端点的构造函数中,我有以下内容:

public ServerEndpointConstructor() {
    mapper = new ObjectMapper();
    mapper.registerModule(new MyModule());
}
我在日志中看到“Set-mixin annotation”是在反序列化异常之前记录的。我从来没有看到“mixin called!”(尽管我不确定mixin构造函数中的代码是否会被调用)。有人能用我的方式告诉我错误吗?我需要注释java.net.HttpCookie中的所有字段吗


我解决了这个问题,问题是我将mixin定义为使用它的类内部的非静态内部类。将它和模块移动到它们自己的包中自己的类定义可以解决这个问题。也可以将mixin内部类标记为“静态”来解决这个问题


值得赞扬的是,作者在发表自己的问题时对这一点的必要性发表了评论。

对我来说,即使是一个内部类,也可以使其保持静态