Используя gson, он работает без проблем, он устанавливает только значение для имени.
public class SO_50688866 {
public static void main(String ... args) {
String json = "{\"name\": \"testname\"}";
Ui ui = new Gson().fromJson(json, Ui.class);
System.out.println(ui.name);
}
public static class Ui {
public String name;
public String title;
}
}
ИЗМЕНИТЬ I
Я вижу, вы хотели как раз обратного :)
Я не вижу, чтобы gson поддерживал это изначально, но я нашел этот ответ, который может удовлетворить ваши потребности: Проверка Java в Json с помощью GSON
Также я придумал этот класс, который может выполнять проверку полей после десериализации строки json. У него есть несколько предостережений, например, если отсутствует примитив, например int, он будет инициализирован нулем, поэтому он не будет нулевым. Или, если эффективно, если поля имеют значение null в json. Но, возможно, вы можете адаптировать его для своих нужд, например, добавить метод, который принимает имена полей для проверки.
public static class CheckNullFields<T>{
@SuppressWarnings("unchecked")
public void check(T obj) throws IllegalAccessException{
Class<T> clazz = (Class<T>) obj.getClass();
Field [] fields = clazz.getDeclaredFields();
for(Field field : fields) {
if(field.get(obj) == null) {
throw new RuntimeException("Null value in field " + field.getName());
}
}
}
}
Вы бы использовали это так:
String json = "{\"name\": \"testname\"}";
try {
Ui ui = new Gson().fromJson(json, Ui.class);
new CheckNullFields<Ui>().check(ui);
System.out.println(ui.name);
System.out.println(ui.title);
}catch(Exception e) {
e.printStackTrace();
}
person
Juan
schedule
04.06.2018