这是我自定义的JSON Serializer,我正在尝试将其注册为模块。这是我到目前为止所拥有的。
public class MaptoListSerializer extends JsonSerializer<Map<String, Car<?, ?>>> {
@Override
public void serialize(Map<String, Car<?, ?>> value, JsonGenerator gen, SerializerProvider serializers)throws IOException, JsonProcessingException {
gen.writeObject(value.values());
}
}
这是我创建的模块类(似乎无法添加序列化程序)。
public class CustomModule extends SimpleModule {
private static final long serialVersionUID = -9105685985325373621L;
public CustomModule() {
super("CustomModule");
}
@Override
public void setupModule(SetupContext context) {
SimpleSerializers serializers = new SimpleSerializers();
//THIS DOESN'T WORK . HOW DO I ADD THE SERIALIZER?
serializers.addSerializer(HashMap.class, new MaptoListSerializer ());
context.addSerializers(serializers);
}
}
以下是它使用的对象映射器(此工作)
mapper = new ObjectMapper();
mapper.registerModule(new CustomModule());
答案 0 :(得分:2)
这是一个问题,因为使用import docker
client = docker.from_env()
stdout = client.containers.run(image="xxxx/pyrisk:latest",command="python prices.py", remove=True)
这是一种原始类型,而这种情况需要泛型。您可以按照文档中的建议在StdSerializer上基于自定义序列化程序来解决此问题。保持HashMap
方法不变,但使用如下构造函数定义序列化程序:
serialize
然后到创建适当class MaptoListSerializer extends StdSerializer<Map<String, Car<?, ?>>> {
MaptoListSerializer(JavaType type) {
super(type);
}
的重要位,并将其传递给此构造函数:
JavaType