Как получить объект из JSON

125
26 июня 2021, 20:40
String jsonString = "{\"result\":{\"ID\":\"1\"}}"

Сейчас я делаю следующим образом:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.USE_JAVA_ARRAY_FOR_JSON_ARRAY, true);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNRESOLVED_OBJECT_IDS, false);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
JSONObject jsonObj = new JSONObject(jsonString);
String result = jsonObj.getString("result");
MyClass myClass = objectMapper.readValue(result, MyClass.class);

MyClass.java

public class MyClass {
    private String id;
    public String getid() {
        return id;
    }
    @JsonProperty("ID")
    public void setid(String id) {
        this.id = id;
    }
}

А как парсить MyClass в jsonString без предварительного выделения result?

А то у меня нет уверенности, что "завтра" вместо result может что-то другое быть.

Answer 1

По идее вам надо просто 2 класса модели создать. Один для внешнего объекта, один для внутреннего. И парсить весь объект как внешний.

public class MyOuterClass {
    private MyClass result;
    public MyClass getResult() {
        return result;
    }
    @JsonProperty("result")
    public void setResult(MyClass result) {
        this.result = result;
    }
}
MyOuterClass myOuterClass = objectMapper.readValue(jsonString, MyOuterClass.class);
READ ALSO
Как изменить TextField с другого фрейма?

Как изменить TextField с другого фрейма?

Пишу программу в которой вызывается 2й фрейм в котором происходит выбор папкиПри нажатии кнопки закрывается фрейм и путь передается в 1й фрейм...

142
Сжатие изображений JPG до указанного размера в байтах

Сжатие изображений JPG до указанного размера в байтах

Есть ли библиотека Java, в которой была бы функция сжатия JPG изображения до определённого (в параметрах) размера в байтах?

114
Regex: составление запроса

Regex: составление запроса

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

82
Из строки получить ZonedDateTime

Из строки получить ZonedDateTime

Есть строка: "2019-11-28T02:25:30372079"

113