使用Jackson使用重载方法将JSON反序列化为对象

使用Jackson使用重载方法将JSON反序列化为对象,第1张

使用Jackson使用重载方法将JSON反序列化为对象

不必更改setter方法的名称即可避免歧义。否则,您在正确的轨道上

@JsonIgnore
。由于
@JsonIgnore
所有同名方法都将被忽略,因此使用的方法不需要
@JsonProperty
注释

这是一个简单的例子来说明这一点。

input.json:

{"value":"forty-two"}

Foo.java:

import java.io.File;import org.prehaus.jackson.annotate.JsonIgnore;import org.prehaus.jackson.map.ObjectMapper;public class Foo{  String value;  public String getValue() {return value;}  public void setValue(String value) {this.value = value;}  @JsonIgnore  public void setValue(int value) {this.value = String.valueOf(value);}  public static void main(String[] args) throws Exception  {    ObjectMapper mapper = new ObjectMapper();    Foo foo = mapper.readValue(new File("input.json"), Foo.class);    System.out.println(mapper.writevalueAsString(foo));  }}

如果您不想使用Jackson注释更改原始POJO定义,则可以使用

MixIn

import java.io.File;import org.prehaus.jackson.annotate.JsonIgnore;import org.prehaus.jackson.map.ObjectMapper;public class Foo{  String value;  public String getValue() {return value;}  public void setValue(String value) {this.value = value;}  public void setValue(int value) {this.value = String.valueOf(value);}  public static void main(String[] args) throws Exception  {    ObjectMapper mapper = new ObjectMapper();    mapper.getDeserializationConfig().addMixInAnnotations(Foo.class, IgnoreFooSetValueIntMixIn.class);    Foo foo = mapper.readValue(new File("input.json"), Foo.class);    System.out.println(mapper.writevalueAsString(foo));  }}abstract class IgnoreFooSetValueIntMixIn{  @JsonIgnore public abstract void setValue(int value);}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5091820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存