Obtenir seul champ de JSON à l'aide de Jackson
Donné un arbitraire JSON je voudrais obtenir la valeur d'un champ unique contentType
. Comment le faire avec Jackson?
{
contentType: "foo",
fooField1: ...
}
{
contentType: "bar",
barArray: [...]
}
Liées
- Comment trouver le nom spécifié et sa valeur en JSON-chaîne à partir de Java? (GSON)
- À l'aide de gson pour désérialiser spécifiques JSON champ d'un objet (GSON)
Ici, stackoverflow.com/a/35722718/715269 c'est une façon de lire seulement nécessaire du terrain en JSON sans cartographie comme un tout.
OriginalL'auteur Jakub M. | 2014-10-04
Vous devez vous connecter pour publier un commentaire.
La Jackson Façon
Considérant que vous n'avez pas de POJO décrivant la structure de données, vous pouvez tout simplement faire:
Répondant à des préoccupations dans la section des commentaires
Si, toutefois, vous ne souhaitez pas consommer la totalité de la source
String
, mais tout simplement d'accéder à une propriété spécifique dont le chemin d'accès, vous le savez, vous aurez à écrire vous-même, s'appuyant sur une Tokeniser.En fait, c'est le week-end et j'ai du temps sur mes mains, afin que je puisse vous donner une longueur d'avance: c'est une base! Il peut fonctionner dans
strict
mode et spew out sensible des messages d'erreur, ou d'être indulgent et de retourOptional.empty
lorsque la demande ne pouvait pas être remplies.En supposant que les éléments suivants contenu JSON:
... vous pouvez utiliser mon
JSONPath
classe comme suit:Gardez à l'esprit que c'est de base. Il n'est pas de contraindre les types de données (chaque valeur qu'elle renvoie est un
String
) et retourne uniquement les nœuds feuilles.Réel de cas de test
Il gère
InputStream
s, de sorte que vous pouvez le tester contre un géant document JSON et de voir que c'est beaucoup plus rapide que de prendre votre navigateur pour télécharger et afficher son contenu:Test rapide
Remarque je ne suis pas réutiliser ce qui existe déjà existant
JSONPath
ouObjectMapper
de sorte que les résultats sont inexactes, ceci est juste une ébauche de comparaison, de toute façon:L'autre réponse est la bonne. Jackson a deux régimes: champs de lecture séparément ou cartographie de l'ensemble de l'objet. La question est à propos de la première.
Nice! Où puis-je lu à ce sujet? Je n'arrive pas à trouver l'info après une rapide Recherche sur Google... je ne pense pas que la deuxième réponse mentionne
Jackson
, qui est la bibliothèque demandé dans la question. Il n'explique pas la différence, vous semblez trouver!studytrails.com/java/json/java-jackson-introduction. Ou chercher JSONObject type - c'est juste la classe qui vous permet de lire uniquement la partie de json que vous avez besoin. Vous êtes bouton droit de la logique de la recherche pour "la lecture de domaine distinct jackson" ne fonctionne pas.
JSONObject lit la chaîne json sans l'aide des objets POJO.
OriginalL'auteur ccjmne
Si vous êtes en utilisant JSON pots dans votre application, puis l'extrait de code suivant est utile:
et si vous utilisez Gson pots puis le même code de ressembler à ce qui suit:
OriginalL'auteur Prasad Khode
Une autre façon est:
OriginalL'auteur xyz