J'ai quelque chose comme client JSON-RPC, et j'ai des problèmes de désérialisation chaîne json entrant dans mon objet java. Le format JSON entrant est:Désérialisation des tableaux avec Jackson
{"value":"xxxx","type":"xxxx"}
L'objet que je veux désérialiser à:
@JsonAutoDetect
@JsonDeserialize()
public class ReturnValue {
private Object value;
private String type;
@JsonCreator
public ReturnValue(@JsonProperty("value") String val, @JsonProperty("type") String type) {
value = val;
this.type = type;
}
...getters, setters...
Cela semble bien fonctionner, si la valeur est une chaîne, mais si ce dernier est de type tableau, il jette JsonMapping Exception - ne peut pas désérialiser instance de java.lang.String de jeton START_ARRAY pour le JSON comme ceci:
{\"value\":[8, 10], \"type\":\"[int]\"}
Le code est:
int[] arr = (int[])getReturnValue(jsonString).getValue();
Où getReturnValue est rien de spécial:
ObjectMapper om = new ObjectMapper();
ReturnValue rv = null;
rv = om.readValue(json, ReturnValue.class);
return rv;
L'autre problème est que je veux la propriété type à être de type classe, mais ce serait jeter une autre exception de la cartographie . Est-ce qu'il y a un moyen à Jackson de le faire, ou dois-je convertir moi-même de la corde à la classe appropriée? Merci pour tout conseil.
Oui, vous avez raison, merci :-) – mirekys