Jackson: ne Peut pas désérialiser instance de Nombre de START_OBJECT jeton
Mon GWT retours de service LinkedList<VisualData>
. C'est de cette façon VisualData
ressemble:
import javax.xml.bind.annotation.XmlRootElement;
import com.google.gwt.user.client.rpc.IsSerializable;
@XmlRootElement
public class VisualData implements IsSerializable {
private Number value;
private long timestamp;
public VisualData() {
}
public VisualData(Number value, long timestamp) {
this.value = value;
this.timestamp = timestamp;
}
public long getTimestamp() {
return timestamp;
}
public Number getValue() {
return value;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
public void setValue(Number value) {
this.value = value;
}
}
J'ai le excepion connecté avec le champ private Number value
.
SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.lang.Number out of START_OBJECT token
at [Source: org.apache.catalina.connector.CoyoteInputStream@a0eb51; line: 1, column: 29] (through reference chain: org.jage.charts.client.VisualData["value"])
Quand je change de private Number value
à private Object value
, tous les getters et les setters j'obtiens:
SEVERE: WebModule[/AgECharts]Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException: Type 'org.jage.charts.client.VisualData' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.: instance = Value:{@type=xs:int, $=6}, timestamp:1360240281439
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:619)
Ce deuxième cas est tout à fait clair, la Object
classe n'est pas sérialisable. Mais pourquoi dois-je obtenir Can not deserialize instance of java.lang.Number out of START_OBJECT token
?
OriginalL'auteur LancerX | 2013-02-07
Vous devez vous connecter pour publier un commentaire.
Vous ne serez pas en mesure de désérialiser des données dans cet objet, sans fournir d'autres informations de type pour votre
value
champ. C'est parce que leNumber
classe est abstraite et ne peut pas être instanciée. Modification du champ àObject
ne va pas aider, car il n'est pas accessible en écriture champs de classe que Jackson peut désérialiser des données.Vous devez modifier le champ pour être l'une des implémentations concrètes de la
Number
classe (Integer
,Long
,Double
etc).OriginalL'auteur Perception