Используя 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, он будет инициализирован нулем, поэтому он не будет нулевым.Или если эффективно, если поля в 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();
}