так что давайте предположим, что у нас есть две системы (система A и система B), которые обмениваются информацией в JSON, однако, ребята из System B не хотят быть по-настоящему кооперативными и утверждают, что все с их полезной нагрузкой в порядке, потому что это«синтаксически» правильный JSON.
Теперь давайте предположим, что у вас есть следующая структура json
{
"INFO": {
"Animal": {
"Cat": {}
}
}
}
Это действительно допустимый JSON, но дело в том, что вы можете иметь одно или несколько животных,поэтому в сценарии с большим количеством животных полезная нагрузка составляет:
{
"INFO": {
"Animal": [{
"Cat": {},
"Dog" :{}
}]
}
}
Только на этот раз, как вы можете видеть, объект Animal на самом деле является массивом объектов ... поэтому система A использует RestTemplate для анализа ответа и имеетпроблемы, поскольку «синтаксически» правильный JSON каждый раз различается по структуре.Кроме того, в JSON могут также возникать ОШИБКИ - в случае ошибок JSON выглядит следующим образом: "ERRORS" : {[error1, error2, etc.]},
, но в случае отсутствия ошибок это выглядит как
"ERRORS" : ""
Так скажите мнепожалуйста, я не прав, что хочу, чтобы полезная нагрузка была согласованной и получал, как всегда, массив объектов, независимо от того, один или много, и не получал узел ошибок в случае отсутствия ошибок, или я что-то упустил?
Я использую RestTemplate и
, когда полезная нагрузка поставляется с одним Animal (мой pojo ожидает 1 или много) -> он не работает, так как не может проанализировать отдельный объект в списке массивов.
, если яизмените его так, чтобы он ожидал только одного животного - оно терпит неудачу, когда приходит более одного.
Более того - «ОШИБКИ»: «» обрабатывается как строка, которая снова вызывает проблемы с анализом.
Итак, есть ли какой-нибудь "хакерский" способ сделать десериализатор Джексона в RestTemplate для обработки этого "синтаксически" правильного JSON, или общая структура JSON должна быть уточнена и согласована (мое мнение)
Спасибо!