J'ai un ObjectMapper Jackson avec un désérialiseur personnalisé pour java.time.Instant (et d'autres types). Comment puis-je lire une valeur unique au lieu d'un blob JSON complet, par ex.Jackson - désérialiser une valeur unique avec les désérialiseurs de Jackson
objectMapper.readValue("2017-02-01T00:00:00Z", Instant.class)
Précisions en réponse aux commentaires demandant un cas d'utilisation:
Je l'ai déjà analysé le JSON dans
class MyConfiguration {
public Instant someField;
public Map<String, String> otherFields;
@JsonAnyGetter
public Map<String, String> any() {
return otherFields;
}
@JsonAnySetter
public void set(String name, String value) {
otherFields.put(name, value);
}
}
Maintenant, j'ai:
interface Something {
void init(MyConfiguration config)
}
class Something2 implements Something {
public void init(MyConfiguration config) {
//Here I would be like the implementation to be able to
//get a value from otherFields deserialised to a specified type.
}
}
Je suis conscient que je pouvais les cartographier directement en utilisant @JsonSubTypes
mais j'essaie de rendre le système extensible et ignorant les implémentations.
Quelle est la pour ce cas d'utilisation? Cela n'a pas beaucoup de sens d'utiliser une bibliothèque JSON si vous n'avez pas JSON. Il suffit d'utiliser https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html#parse-java.lang.CharSequence- – pedromss
@pedromss J'analyse un fichier YAML pour une configuration qui a certaines propriétés dynamiques (une carte) et j'essaie de laisser différentes implémentations d'une interface tirer les propriétés avec un type spécifique, par exemple ' T getProperty (Chaîne prop, Carte carte, Classe clazz)' –
bcoughlan
Je suis toujours confus. Vous avez du JSON, et vous voulez extraire du champ et désérialiser seulement cela? –