不必更改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);}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)