Hier ist ein (ein Teil) Serverantwort:Jackson ist zu verkennen Objektfeld mit JsonTypeInfo.Id.NAME
{
"ok": true,
"result": [
{
"update_id": 489881706,
"message": {
"message_id": 5,
"from": {
"id": 188474643,
"first_name": "Alireza",
"last_name": "Mohamadi",
"username": "SuNova"
},
"chat": {
"id": 188474643,
"first_name": "Alireza",
"last_name": "Mohamadi",
"username": "SuNova",
"type": "private"
},
"date": 1462608191,
"text": "1"
}
}
]
}
Ich habe eine Result
Klasse, die wie ist (getrimmte Code zu reduzieren):
public class Result
{
private TObject[] result;
private boolean ok;
public void setOk (boolean ok) //Rest of the code
public void setResult (TObject[] result) //...
public TObject[] getResult() //...
public boolean getOk() //...
}
Und ich habe ein Abstract Class
TObject
genannt:
@JsonTypeInfo (use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT)
@JsonSubTypes ({
@JsonSubTypes.Type (name = "chat", value = Chat.class),
@JsonSubTypes.Type (name = "message", value = Message.class),
@JsonSubTypes.Type (name = "message_entity", value = MessageEntity.class),
})
public abstract class TObject
{
int update_id;
boolean isUpdate;
public void setUpdate_id (int update_id)
{
this.update_id = update_id;
isUpdate = true;
}
public int getUpdate_id()
{
return update_id;
}
}
Das Problem ist, weil ich
@JsonTypeInfo (use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT)
verwendet wird, es nicht update_id
als ein Feld zu erkennen, anstatt sie es als JsonTypeInfo.Id.NAME
und zeigt mir erkennt:
com.fasterxml.jackson.databind.JsonMappingException: Could not resolve type id 'update_id' into a subtype of [simple type, class org.telegram.objects.TObject]: known type ids = [TObject, chat, message, message_entity]
Jetzt sagen Sie mir bitte, wie ich jackson sagen kann parsen update_id
als ein Feld von TObject
und verwechseln Sie es nicht als JsonTypeInfo.Id.NAME
?
Ich bearbeitete Frage habe und es verbessert. Jetzt denke ich, dass es nicht mehr vage ist. –