Вы можете сделать собственный десериализатор для объекта, см. Ниже.
@JsonDeserialize(using = CustomDeserializer::class)
data class MyCustomObject(
var name: String,
var list: List<Int>
)
class CustomDeserializer: JsonDeserializer<MyCustomObject>(){
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): MyCustomObject {
var myList = ArrayList<Int>()
var myName = ""
while(p.nextToken() != JsonToken.END_OBJECT){
if(p.currentName() == "name"){
myName = p.nextTextValue()
}
if(p.currentName().contains("list")){
myList.add(p.nextIntValue(0))
}
}
return MyCustomObject(myName, myList)
}
}
Это было написано на Kotlin, если вам нужна моя помощь в преобразовании его в Java, дайте мне знать.
РЕДАКТИРОВАТЬ Вышли вперед и преобразовали его в Java для вас.Прошу прощения за любые опечатки :) дайте мне знать, если у вас есть какие-либо вопросы или проблемы
@JsonDeserialize(using = CustomDeserializer.class)
public class MyCustomObjectAgain {
private String name;
private List<Integer> myList;
public MyCustomObjectAgain(String name, List<Integer> myList) {
this.name = name;
this.myList = myList;
}
private class CustomDeserializer extends JsonDeserializer<MyCustomObject>{
@Override
public MyCustomObject deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
List<Integer> myList = new ArrayList();
String myName = "";
while(p.nextToken() != JsonToken.END_OBJECT){
if(p.currentName() == "name"){
myName = p.nextTextValue();
}
if(p.currentName().contains("list")){
myList.add(p.nextIntValue(0));
}
}
return new MyCustomObject(myName, myList);
}
}
}