Gson сериализует значение null, только если значение соответствует определенному шаблонуJAVA

Программисты JAVA общаются здесь
Anonymous
Gson сериализует значение null, только если значение соответствует определенному шаблону

Сообщение Anonymous »

Представьте, что у меня есть объект, который выглядит так:

Код: Выделить всё

@Getter
@Setter
static class MyObject {
private String firstName;
private String lastName;
private long salary;
}
и тогда у меня есть:

Код: Выделить всё

private static final String KEEP_ME = "$$$___KEEP_ME___$$$";

MyObject obj = new MyObject();
obj.setFirstName(KEEP_ME);
obj.setLastName(null);
obj.setSalary(1000);
Я хочу создать собственный сериализатор, который будет удалять любые значения NULL и сохранять поля, равные KEEP_ME, с нулевым значением. Ожидаемый результат должен выглядеть следующим образом:

Код: Выделить всё

{"firstName":null,"salary":1000}
Мой сериализатор выглядит так:

Код: Выделить всё

static class NullStringSerializer implements JsonSerializer {

private static final String KEEP_ME = "$$$___KEEP_ME___$$$";

@Override
public JsonElement serialize(String src, Type typeOfSrc, JsonSerializationContext context) {
if (src == null) {
return JsonNull.INSTANCE;
}

if (KEEP_ME.equals(src)) {
return JsonNull.INSTANCE;
}

return context.serialize(src, typeOfSrc);
}
}
и

Код: Выделить всё

Gson gsonBuilder = newDefaultGson()
.registerTypeAdapter(String.class, new NullStringSerializer())
.create();
gsonBuilder.toJson(obj);
но это дает мне:

Код: Выделить всё

{"salary":1000}
Какое решение этой ситуации, пожалуйста?

Подробнее здесь: https://stackoverflow.com/questions/787 ... ic-pattern

Вернуться в «JAVA»