【问题标题】:How to exclude objects from serializing based on some values witg GSON?如何根据 GSON 的某些值从序列化中排除对象?
【发布时间】:2020-06-06 19:35:42
【问题描述】:

我有一个像这样的 POJO 类制作的 json 结构 -

 {
"arrayA":[
      {
         "arrayB":[
            {
              "arrayC":[
                  {
                     "base64String":null
                  },
                  {
                     "base64String":"base 64 value here"
                  }
               ]
            }
         ]
      }
   ]
}

如您所见,arrayC 中的对象有一个名为 base64String 的字段。现在这个 base64String 有时可能为 null,所以在将 POJO 序列化为 json 时,有没有办法检查这个 base64String 是否为 null 并从序列化中省略该特定对象?

【问题讨论】:

    标签: java android json serialization gson


    【解决方案1】:

    查看文档,我可以自己完成。如果其他人需要这个,请在​​这里回答。我们需要使用 Gson 提供的JsonSerializer 来检查正在序列化的值。

        public class SerializeFiles implements JsonSerializer<MyClass> {
    
        @Override
        public JsonElement serialize(MyClass src, Type typeOfSrc, JsonSerializationContext context) {
            Gson gson = new Gson();
            JsonObject object = (JsonObject) gson.toJsonTree(src);
            JsonArray arrayA = object.getAsJsonArray("arrayA");
            for (JsonElement element : arrayA) {
                JsonObject objA = element.getAsJsonObject();
                JsonArray arrayB = insObj.getAsJsonArray("arrayB");
                for (JsonElement elementB : arrayB) {
                    JsonObject objB = elementB.getAsJsonObject();
                    JsonArray arrayC = objB.getAsJsonArray("arrayC");
                    for(JsonElement elementC : arrayC) {
                        JsonObject objectC = elementC.getAsJsonObject();
                        if(objectC.get("base64String") == null) {
                            arrayC.remove(objB);
                        }
                    }
                }
                return object;
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 2022-08-20
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 2020-10-27
      • 2015-07-03
      相关资源
      最近更新 更多