首页 > 解决方案 > 无法使用java打印嵌套json中的所有非空值

问题描述

我的目的是仅使用非空对象打印 Json。如附图中所示,我有不想打印的空对象。选择 Gson 或 Jackson 等哪个库并不重要 在此处输入图像描述

到目前为止尝试了很多组合,但没有奏效

我的数据结构是:

Map<AWSRegion, List<SecurityGroupDiff>> listEntry...

public class SecurityGroupDiff  {

  @JsonInclude(Include.NON_EMPTY) ... // on all fields/objects
    private String groupId;
    private String groupName;
    private String vpcId;
    private String owner;
    private String type;

    private List<IPPermissionDiff> ipPermissionDiffs;

}

到目前为止尝试:

private static final ObjectMapper MAPPER = new ObjectMapper().
                    setSerializationInclusion(Include.NON_NULL).setSerializationInclusion(Include.NON_EMPTY).setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);


    MAPPER.writerWithDefaultPrettyPrinter()
                    .writeValueAsString(listEntry)

结果还是一样...

{
  "CANADA" : [ { }, { }, { }, { }, {
    "ipPermissionDiffs" : [ { }, { }, { }, { } ]
  }, { }, { }, { } ],
  "ASIA_SIDNEY" : [ {
    "ipPermissionDiffs" : [ { }, { }, { }, { }, { } ]
  }, { }, { }, { }, { }, { }, { }, {
    "ipPermissionDiffs" : [ { }, { }, { }, { } ]
  }, { } ],
  "EU" : [ { }, { }, { }, { }, { }, { }, { }, { }, {
    "ipPermissionDiffs" : [ { }, { }, { }, { }, { }, { }, { } ]
  }, { } ]
}

谢谢

标签: javajsonjava-8jacksongson

解决方案


推荐阅读