Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jackson时忽略属性和访问器_Java_Json_Rest_Jackson_Jax Rs - Fatal编程技术网

Java 使用jackson时忽略属性和访问器

Java 使用jackson时忽略属性和访问器,java,json,rest,jackson,jax-rs,Java,Json,Rest,Jackson,Jax Rs,我有一个POJO,需要序列化为JSON。POJO有很多属性,我只想将其中的一小部分序列化到JSON表示中。我正在使用jackson进行序列化。因为有很多属性我想忽略,所以将它们注释为@JsonIgnore看起来很难看 有没有办法告诉jackson或将objectMapper配置为仅在其注释为@JsonProperty时包含属性,而忽略其余部分而不指定@JsonIgnore 如下设置对象映射器: ObjectMapper mapper = new ObjectMapper(); mapper.se

我有一个POJO,需要序列化为JSON。POJO有很多属性,我只想将其中的一小部分序列化到JSON表示中。我正在使用jackson进行序列化。因为有很多属性我想忽略,所以将它们注释为@JsonIgnore看起来很难看


有没有办法告诉jackson或将objectMapper配置为仅在其注释为@JsonProperty时包含属性,而忽略其余部分而不指定@JsonIgnore

如下设置对象映射器:

ObjectMapper mapper = new ObjectMapper();
mapper.setVisibilityChecker(mapper.getDeserializationConfig().getDefaultVisibilityChecker()
        .withCreatorVisibility(JsonAutoDetect.Visibility.NONE)
        .withFieldVisibility(JsonAutoDetect.Visibility.NONE)
        .withGetterVisibility(JsonAutoDetect.Visibility.NONE)
        .withIsGetterVisibility(JsonAutoDetect.Visibility.NONE)
        .withSetterVisibility(JsonAutoDetect.Visibility.NONE));

归功于:)

通过扩展Enrichman的答案,您还可以为您的POJO类添加注释,以达到相同的效果:

@JsonAutoDetect(
    creatorVisibility = JsonAutoDetect.Visibility.NONE, 
    fieldVisibility = JsonAutoDetect.Visibility.NONE,
    getterVisibility = JsonAutoDetect.Visibility.NONE,
    isGetterVisibility = JsonAutoDetect.Visibility.NONE,
    setterVisibility = JsonAutoDetect.Visibility.NONE
)
public class MyPojo {

    // fields, getters, setter, constructors, etc.

}
这将忽略POJO中默认情况下未使用
JsonProperty
注释的所有内容

@JsonAutoDetect(JsonMethod.NONE)
将忽略类中未由
@JsonProperty注释的所有字段

但它只适用于org.codehaus.jackson,而不适用于com.fasterxml.jackson