How To Skip Null Entries With Gson
When deserializing JSON with Gson, is there a way to skip null entries in a JSON array? [     {         text: 'adsfsd...',         title: 'asdfsd...'     },     null,     {
Solution 1:
You can exclude null values by writing your own custom gson JsonDeserializer
Assuming that you have your model class
classGetData {
    private String title;
    private String text;
}
classCustomDeserializerimplementsJsonDeserializer<List<GetData>> {
    @Overridepublic List<GetData> deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext context)throws JsonParseException {
       JsonArrayjsonArray=    jsonElement.getAsJsonArray();
       List<GetData>  list=newArrayList<>(30);
       Gsongson=newGson();
       for (JsonElement element : jsonArray) {
           // skipping the null here, if not null then parse json element and add in collectionif(!(element instanceof JsonNull))
           {
               list.add(gson.fromJson(element,  GetData.class));
           }
        }
        return list;
    }
Finally you can parse it
Gson gson = newGsonBuilder().registerTypeHierarchyAdapter(Collection.class, newCustomDeserializer()).create();
gson.fromJson(builder.toString(), Collection.class);
Solution 2:
Null values are excluded by default as long as you don't set serializeNulls() to your GsonBuilder. Once I found this. and worked for me:
classCollectionAdapterimplementsJsonSerializer<Collection<?>> {
  @Override
  public JsonElement serialize(Collection<?> src, Type typeOfSrc, JsonSerializationContext context) {
    if (src == null || src.isEmpty()) // exclusion is made herereturnnull;
    JsonArray array = new JsonArray();
    for (Object child : src) {
      JsonElement element = context.serialize(child);
      array.add(element);
    }
    returnarray;
  }
}
Then register this by this code:
Gson gson = newGsonBuilder().registerTypeHierarchyAdapter(Collection.class, newCollectionAdapter()).create();
Hope this helps.. :)
Post a Comment for "How To Skip Null Entries With Gson"