我有一个 json 字符串,如下所示:{"a":5, "b":"asd", "c":"{\"d\":3}"}
这可以反序列化为如下对象:
class A {
int a; // --> 5
String b; // --> 'asd'
String c; // --> '{"d":3}'
}
但我希望将其反序列化为:
class A {
int a; // --> 5
String b; // --> 'asd'
MyClass c; // --> '{"d":3}'
}
其中 MyClass 是:
class MyClass {
int d; // --> 3
}
在反序列化期间如何在杰克逊中实现这一点?
我刚刚发现我可以使用 jackson 转换器:
public class MyClassConverter implements Converter<String, MyClass> {
@Override
public MyClass convert(String value) {
try {
return new ObjectMapper().readValue(value, MyClass.class);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
@Override
public JavaType getInputType(TypeFactory typeFactory) {
return typeFactory.constructSimpleType(String.class, null);
}
@Override
public JavaType getOutputType(TypeFactory typeFactory) {
return typeFactory.constructSimpleType(MyClass.class, null);
}
}
在 Bean 中:
class A {
int a;
String b;
@JsonDeserialize(converter = MyClassConverter.class)
MyClass c;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)