Я использую клиент jersey2 jaxrs и moxy по умолчанию в качестве средства отображения ответов. Следующим json является мой ответ json от службы.
{"key":"thekey","id":"the___id","value":{"imageUrl":"https://asdad","imageType":"asdsadasd"}}
https://api.myjson.com/bins/efe74
Но в нашем бизнесе нужно значение «стоимость» поле не может быть определено. Иногда это может быть массив, объект или просто целое число. В общем, я не знаю тип объекта.
Из-за этого мой класс DTO выглядит следующим образом.
public class FieldData {
private String id;
private String key;
private Object value;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getKey() {
return key;
}
public void setKey(String value) {
this.value = value;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
}
И по умолчанию jersey2 использует moxy и JAXB в качестве ответа Mapper. Теперь проблема в том, что id и значения ключей отображаются правильно, так как он знает конкретный тип.
Но поле значения переведено как XML строка в клиенте.
{
"key":"thekey",
"id":"the___id",
"value": "<? xml version="1.0" encoding="UTF-8"?><value imageUrl=\"https://asdad\" imageType=\"asdsadasd\"><imageUrl></imageUrl></value>"
}
Я могу понять, что из-за типа объекта JAXB может не знать конкретный тип. Но все, что я ожидаю, это то, что ответ этого поля значения должен быть в JSON вместо этой искаженной строки XML.
Как этого добиться?