【发布时间】:2019-07-28 10:20:12
【问题描述】:
我创建了一个 Jackson Custom Deserializer 来反序列化 JSON 字符串:
public class TestMapper extends StdDeserializer<Test> {
public TestMapper() {
this(null);
}
public TestMapper(Class<?> vc) {
super(vc);
}
@Override
public Test deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
我想将“字符串参数”传递给我想在反序列化期间使用的反序列化方法。有没有办法做到这一点?
我在我的代码中按如下方式调用反序列化器:
new ObjectMapper().readValue(json, Test.class)
测试类是:
@JsonDeserialize(using = TestMapper.class)
public class Test {
【问题讨论】:
-
你可以在构造函数中传递任何参数
-
@SharonBenAsher - 我将解封器称为如下 - new ObjectMapper().readValue(json, Test.class) 并且测试类具有 @JsonDeserialize(using = TestMapper.class) 注释.如何使用构造函数传递 new ObjectMapper().readValue(json, Test.class) 中的值?
-
您可以通过编程方式注册反序列化程序。看到这个stackoverflow.com/questions/6553051/…的答案@
-
如果我添加构造函数 public TestMapper(String test) { },我会收到消息没有可用于超类的默认构造函数。
-
@SharonBenAsher,添加 public TestMapper(String test) {super(Test.class);this.测试 = 测试;} 工作。感谢您的帮助!
标签: java json jackson jackson2