Изменить имя свойства при десериализации ответа в Java - PullRequest
0 голосов
/ 18 сентября 2018

Ответ JSON от API:

{
   "result":[
      {
         "ResultType":"SUCCESS"
      }
   ]
}

после преобразования в ResultClass.class:

{
   "result":[
      {
         "resultType":null
      }
   ]
}

Ожидаемый вывод после преобразования в ResultClass.class:

{
   "result":[
      {
         "resultType":"SUCCESS"
      }
   ]
}

Я интегрируюсь со сторонним API. Я хочу изменить имя свойства при десериализации. Я пробовал @JsonProperty в полевых методах получения и установки. Но значение не отражается в поле resultType.

ResultClass.java

@JsonProperty("result")
List<TestClass> result = new ArrayList<>();

public List<TestClass> getResult() {
        return result;
}

public void setResult(List<TestClass> result) {
    this.result = result;
}

TestClass.java

@JsonProperty("ResultType")
private String resultType;

public String getResultType() {
        return resultType;
}

public void setResultType(String resultType) {
        this.resultType = resultType;
}

Примечание. Я пробовал JsonObject, и он работает нормально. Я использую HttpClient и HttpResponse длясделать запрос. Версия Джексона: 2.5.0

1 Ответ

0 голосов
/ 18 сентября 2018

2 Доступны решения:

1. Сделать десериализацию без учета регистра

Добавьте эту функцию на ваш объект сопоставления:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

2. Сериализация и десериализация с разными именами свойств

Чтобы изменить имя свойства ResultType на resultType, лучше использовать @JsonGetter и @JsonSetter:

import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonSetter;

public class TestClass {

    private String resultType;

    @JsonGetter("resultType")
    public String getResultType() {
        return resultType;
    }

    @JsonSetter("ResultType")
    public void setResultType(String resultType) {
        this.resultType = resultType;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...