So how do you serialize NULL ?
NULL would typically mean that the attribute is omitted from the json, but what if you WANT the NULL to be there, to symbolize an attribute that should be REMOVED.
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@ToString
public static class Product {
public String model;
public String color;
public String shirtSize;
}
@Test
void howToSerializeNULL() {
Product bossShirt = new Product("super slim", "red", "xl");
System.out.println("Product : " + JSONUtils.stringify(bossShirt));
bossShirt.setShirtSize(null);
System.out.println("Product : " + JSONUtils.stringify(bossShirt));
Map<String, Object> obj = new HashMap<>();
obj.put("model", "super slim");
obj.put("color", "red");
obj.put("shirtSize", JSONObject.NULL);
System.out.println("Product : " + JSONUtils.stringify(obj));
GsonBuilder builder = new GsonBuilder();
builder.serializeNulls();
Gson gson = builder.create();
System.out.println("Product : " + gson.toJson(obj));
System.out.println("Product : " + gson.toJson(bossShirt));
}