当前位置: 首页 > 知识库问答 >
问题:

Jackson不忽略空值

常经赋
2023-03-14

这是我的东西

public class TokenTO {
    private String clientId;
    private String clientSecret;
    private String authCode;
    private String authToken;
    ....
}

当我得到json响应时,我看到

{"clientId":null,"clientSecret":null,"authCode":null,"authToken":"312301658396979836978200915715157679015:80bf41c2-bc97-492f-a65e-172bef9efb7c:922000000"} 

我的JacksonContextResolver看起来像

public JacksonContextResolver() {
        objectMapper = new ObjectMapper()
                .setSerializationInclusion(JsonSerialize.Inclusion.ALWAYS);

        final AnnotationIntrospector annotationIntrospector = new JaxbAnnotationIntrospector();
        objectMapper
                .enable(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING)
                .setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL)
                .setDeserializationConfig(objectMapper.getDeserializationConfig().withAnnotationIntrospector(annotationIntrospector))
                .setSerializationConfig(objectMapper.getSerializationConfig().withAnnotationIntrospector(annotationIntrospector));
    }  
 <properties>
     <jaxrs-api.version>3.0.8.Final</jaxrs-api.version>
     <maven-war-plugin.version>2.4</maven-war-plugin.version>
     <resteasy-jaxrs.version>3.0.9.Final</resteasy-jaxrs.version>
     <jackson.version>1.9.13</jackson.version>
    <jaxrs-api.version>3.0.8.Final</jaxrs-api.version>
 </properties>
 <dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>${jackson.version}</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-xc</artifactId>
    <version>${jackson.version}</version>
</dependency>

问题

如何消除JSON中的null值?

共有1个答案

颜华池
2023-03-14

由于我使用的是Java EE7,所以我尝试使用JSON处理。

我所做的改变是

对于测试,我添加了

    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.json</artifactId>
        <version>1.0.4</version>
        <scope>test</scope>
    </dependency>
public JsonObject getAuthToken(@Nonnull final TokenManager tokenManager) {
        final String token = tokenManager.getAccessToken(clientId, clientSecret, authCode);
        return Json.createObjectBuilder().add("authToken", token).build();
    }
final JsonObject jsonReply = getJsonObjectFromResponse(response);
assertNotNull(jsonReply.getString("authToken"));
    @Nonnull
    protected JsonObject getJsonObjectFromResponse(@Nonnull final Response response) {
        final JsonReader jsonReader = Json.createReader(new StringReader(response.readEntity(String.class)));
        return jsonReader.readObject();
    }
{"authToken":"165099393037221788471723459805657963846:8b0f2514-938f-4509-964f-ee073dbab4ed:238000000"} 
 类似资料:
  • 问题内容: 我目前正在使用杰克逊2.1.4,并且在将对象转换为JSON字符串时忽略字段时遇到了一些麻烦。 这是我的类,它充当要转换的对象: 这是我如何转换它: 这是输出: 如何避免这些空值?我只想获取“订阅”目的所需的信息! 这正是我要查找的输出: 我还尝试了@JsonInclude(Include.NON_NULL)并将所有变量都设置为null,但是它也不起作用!感谢您的帮助! 问题答案: 您将

  • 下面是我的类,它充当要转换的对象: 下面是我的转换方法: 输出如下: 下面正是我要查找的输出: 我还尝试了@jsonInclude(include.non_null),并将我的所有变量置为null,但也没有起作用!谢谢你们的帮助!

  • 知道我做错了什么吗?如果重要的话,我将使用Jackson-core 2.1.1。

  • 我试图使用Jackson注释来重新命名序列化过程中产生的一些json标签。所有注释都编译得很好,当我运行时,除了所有Jackson注释之外,Jackson序列化工作完全被忽略。即使像@jsonignore或@jsonproperty这样的基本命令对json响应也没有影响。构建路径中的库有: 下面是我需要序列化的一个类的代码示例:

  • 在Spring MVC中,我需要将空字符串()视为。这是因为我发现,当我编辑一个表单字段(带有Angular的ng-model),该字段最初是,然后将其擦除为空白时,Angular将以空字符串的形式发送该bean属性。如果我不接触这样的null值,它将不会在JSON有效负载中发送,因此被视为null。

  • 我正在用java中的jackson构建一个json体。它会像下面这样 基于不同的 REST URI,json 主体必须忽略某些字段或元素。如何使用杰克逊忽略上述 json 正文中的“学生”部分?当我忽略它时,我应该只能得到 但我得到它如下,这是不正确的- 我有两个带有getters和setters的类,一个作为主语,另一个作为学生。我尝试使用@JsonIgnore,但是它忽略了所有的URI,这是我