Je sais comment déroulez un Object
à Jackson, mais je ne peux pas trouver des exemples sur la façon de déroulez deux couches.Comment dire Jackson de faire un sous-élément l'élément de niveau supérieur
EndPoints API Sharepoint reviennent tout dans le format suivant:
{
"d": {
"results": [
{
/* lots objects with lots of properties
that are irrelevant to the question */
}
]
}
}
J'ai essayé ce qui suit et il ne fait pas l'objet results
valeur de niveau supérieur.
this.om.readerFor(new TypeReference<List<User>>() {})
.withRootName("d")
.readValue(response.parseAsString());
Comment puis-je dire Jackson
pour commencer l'analyse syntaxique du results
comme le haut niveau Array
sans avoir à créer une hiérarchie d'objets personnalisée et sans avoir à écrire un désérialiseur personnalisé. J'ai un objet personnalisé qui est annoté que cela va peupler, je veux TypeSafety
donc Map<String,Object>
n'est pas ce que je veux.
Je suis venu avec une variation de cette solution indépendamment, je pense que c'est la meilleure façon d'obtenir ce que je veux. –
Quant à * efficient *, il doit tout analyser une fois de toute façon, donc passer dans le 'JsonNode' pour commencer à convertir n'est pas moins efficace de manière significative. Cela fait juste ce qu'il fait normalement, mais en deux étapes explicites. Si ça devait être super efficace dans 'space' ou' time' je n'utiliserais pas 'Json' beaucoup moins' SharePoint' :-) –
@JarrodRoberson ouais, je pense aussi que la performance n'est pas un gros problème ici. En fait, j'ai publié que je n'ai jamais testé la performance, en comptant toujours sur les autres mots des gens. Et après des tests de base: https://gist.github.com/varren/3b7468a1d7abadad4958fe6bd7d42d44#file-main-java-L153-L178 De point de temps, il ne semble pas si mauvais, peut être 2 fois plus lent pour les cas simples avec 1 champ dans l'utilisateur et probablement 30% plus lent pour le json complexe. Du point de l'espace, il est également presque deux fois moins efficace https://i.stack.imgur.com/bftGe.png puis des objets de wraper ou deserilizer personnalisé ou en ligne 'JsonParser' – varren