java - 你如何让 GSON 忽略 null 或空对象以及空数组和列表?

标签 java json gson

我正在使用 Gson,我处于必须缩小某些 Json 字符串大小的情况。为此,我希望它不将空对象、空值、空列表和数组放入 Json 字符串中。

有直接的方法吗?

让我澄清一下:我希望跳过所有内容:emptyProp:{} 或 emptyArray:[]。我希望跳过任何只包含空属性的对象。

最佳答案

只要您不为 GsonBuilder 设置 serializeNulls(),默认情况下会排除 Null 值。

空列表的一种方法是创建一个 JsonSerializer

class CollectionAdapter implements JsonSerializer<List<?>> {
  @Override
  public JsonElement serialize(List<?> src, Type typeOfSrc, JsonSerializationContext context) {
    if (src == null || src.isEmpty()) // exclusion is made here
      return null;

    JsonArray array = new JsonArray();

    for (Object child : src) {
      JsonElement element = context.serialize(child);
      array.add(element);
    }

    return array;
  }
}

然后注册

Gson gson = new GsonBuilder().registerTypeHierarchyAdapter(Collection.class, new CollectionAdapter()).create();

关于java - 你如何让 GSON 忽略 null 或空对象以及空数组和列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11942118/

相关文章:

java - 使用 JSON (GSON) 将 PHP 关联数组传输到 Java Map<String, Double>

java - 生成具有列表和字符串类型属性的 JSON 模型

java - 我对该程序中使用的逻辑感到困惑,需要深入解释

java - 创建资源路径时从 ZipFileSystemProvider 获取 FileSystemNotFoundException

java - JMF:无法在未实现的 Controller 上设置媒体时间

android - 在后台更新位置

android - 如何在android中将json数组转换为字符串数组?

java - 如何在java中启动三个按顺序运行的任务?

jquery - 如何使用 jQuery 从 JSON 文件获取 key

java - 为什么 Gson 在发布后改变属性?