gpt4 book ai didi

jersey - 使用 Dropwizard 自定义序列化器/反序列化器的选项?

转载 作者:行者123 更新时间:2023-12-05 01:00:52 24 4
gpt4 key购买 nike

使用 dropwizard 在外部注册自定义(反)序列化程序的好方法是什么?

我在(反)序列化复合对象时遇到了问题。我尝试使用 @JsonUnwrapped获得我想要的 JSON,但在反序列化时遇到了问题 - 它需要特殊的构造函数来接受字符串,并且需要复合对象具有构造封装对象的知识。另外,我想要一种不必在我的值对象上使用 Jackson 注释的方法。

例如,我有:

public class SubmissionModule extends SimpleModule {
public SubmissionModule() {
addDeserializer(SubmissionDetails.class, new SubmissionDeserializer());
addSerializer(SubmissionDetails.class, new SubmissionSerializer());
}

public class SubmissionSerializer extends JsonSerializer<SubmissionDetails> {
@Override
public void serialize(SubmissionDetails value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
jgen.writeStartObject();
jgen.writeStringField("id", "" + value.getId());
jgen.writeStringField("title", value.getTitle());
jgen.writeStringField("abstract", value.getAbstract());
jgen.writeEndObject();
}
}

public class SubmissionDeserializer extends JsonDeserializer<SubmissionDetails> {
@Override
public SubmissionDetails deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException {
JsonNode node = jp.getCodec().readTree(jp);
return aSubmissionWithId(SubmissionId.from(node.get("id").asText()))
.title(node.get("title").asText())
.abstract_(node.get("abstract").asText()).create();
}
}
}

我已在 DropWizard 中注册,如下所示: bootstrap.getObjectMapper().registerModule(new SubmissionModule());
但我不知道是否可以在 Jersey 客户端(或使用 ResourceTestRule 时可用的客户端)注册(反)序列化程序。

有任何想法吗?

最佳答案

"but I can't figure out if it's possible to register the (de)serializers with the Jersey Client (or the client available when using ResourceTestRule). "



查看 source code for ResourceTestRule .有一个方法 setMapper(ObjectMapper)
你可以做类似的事情
ObjectMapper mapper = Jackson.newObjectMapper();
mapper.registerModule(new SubmissionModule());
@ClassRule
public static final ResourceTestRule RULE
= new ResourceTestRule.Builder().setMapper(mapper).addResource(...).build();

关于jersey - 使用 Dropwizard 自定义序列化器/反序列化器的选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28751215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com