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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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