2017-06-13 36 views
1

我想跳过一些特殊的JSON解析。
假代码:如何过滤JSON中的某些特殊字段?

class A { 
    String name; 
    Boolean isOk; 
} 

我的实例:

A a1 = new A("fake1", true); 
A a2 = new A("nobody", false); 

当名称是 “没有人”,分析将跳过此字段。

所以我期待JSON是:

A1 - > { “名”: “fake1”, “ISOK”: “真正的”}
A2 - > { “ISOK”: “假”}

我知道有一种方法可以通过编写TypeAdapterJsonSerializer来解决这个问题。
是否有其他更通用的实现?

回答

1

杰克逊将默认使用getter方法来获取值。这是更简单的做,在吸气剂,在自定义序列:

String getName() { 
    return "nobody".equals(name) ? null : name; 
} 

如果您不能修改,吸气,你可以再拍一次只为杰克逊:

@JsonProperty("name") 
String getNameUnlessNobody() { 
    return "nobody".equals(name) ? null : name; 
} 

// tell jackson to ignore standard getter 
@JsonIgnore 
String getName() { 
    return name; 
} 

没有这么直截了当。

+0

这是退出优雅。非常感谢。还有一个问题,我可以自定义一个对象映射器或一个gson构建器,以及如何? Getter方法将用于其他地方,这可能是不安全的。 – shanfeng

相关问题