Je voudrais analyser les données de JSON qui sont de type String
. J'utilise Google Gson .
J'ai:
jsonLine = "
{
"data": {
"translations": [
{
"translatedText": "Hello world"
}
]
}
}
";
et ma classe est:
public class JsonParsing{
public void parse(String jsonLine) {
// there I would like to get String "Hello world"
}
}
Réponses:
C'est du code simple pour le faire, j'ai évité toutes les vérifications mais c'est l'idée principale.
Pour rendre l'utilisation plus générique, vous constaterez que les javadocs de Gson sont assez clairs et utiles.
la source
Dans ma première application gson, j'ai évité d'utiliser des classes supplémentaires pour attraper des valeurs principalement parce que j'utilise json pour les questions de configuration
malgré le manque d'informations (même la page gson), c'est ce que j'ai trouvé et utilisé:
a partir de
Chaque fois que gson voit un {}, il crée une carte (en fait une StringMap gson)
Chaque fois que gson voit un «», il crée une chaîne
Chaque fois que gson voit un nombre, il crée un double
Chaque fois que gson voit un [], il crée une ArrayList
Vous pouvez utiliser ces faits (combinés) à votre avantage
Enfin c'est le code qui fait la chose
la source
La chose la plus simple est généralement de créer une hiérarchie d'objets correspondante, comme ceci:
puis liez à l'aide de GSON, traversez la hiérarchie d'objets via des champs. L'ajout de getters et de setters est inutile pour les conteneurs de données de base.
Donc quelque chose comme:
la source
Vous pouvez créer des classes Java correspondantes pour les objets json. Les valeurs de chaîne entière peuvent être mappées telles quelles. Json peut être analysé comme ceci-
Voici un exemple - http://rowsandcolumns.blogspot.com/2013/02/url-encode-http-get-solr-request-and.html
la source
Vous pouvez utiliser une classe distincte pour représenter l'objet JSON et utiliser des
@SerializedName
annotations pour spécifier le nom de champ à saisir pour chaque membre de données:Ensuite, vous pouvez faire l'analyse dans votre méthode parse () en utilisant un
Gson
objet:Avec cette approche, vous pouvez réutiliser la
Response
classe pour ajouter d'autres champs supplémentaires pour récupérer d'autres membres de données que vous voudrez peut-être extraire de JSON - au cas où vous voudriez apporter des modifications pour obtenir des résultats, par exemple, pour plusieurs traductions en un seul appel, ou pour obtenir une chaîne supplémentaire pour la langue source détectée.la source
Une façon serait de créer un JsonObject et d'itérer les paramètres. Par exemple
Ensuite, vous pouvez extraire des valeurs de bean comme:
J'espère que cela t'aides.
la source
En utilisant Gson pour résoudre,
je créerais une classe pour un paramètre individuel dans la chaîne json. Vous pouvez également créer une classe principale appelée "Data", puis créer des classes internes de la même manière. J'ai créé des classes séparées pour plus de clarté.
Les classes sont les suivantes.
Dans la classe JsonParsing, nous appelons la méthode "parse"
gson.fromJson(jsonLine, Data.class)
qui convertira la chaîne en objets java en utilisant Reflection.Une fois que nous avons accès à l'objet "Données", nous pouvons accéder à chaque paramètre individuellement.
Je n'ai pas eu l'occasion de tester ce code car je suis loin de ma machine de développement. Mais cela devrait aider.
Quelques bons exemples et articles.
http://albertattard.blogspot.com/2009/06/practical-example-of-gson.html
http://sites.google.com/site/gson/gson-user-guide
Code
la source
private String translatedText
sans violer le contrôle d'accès, il n'y a donc aucun moyen de lefromJSON
définir dans les JVM qui n'ont pas opté pour le piétinement par réflexion partout dans le contrôle d'accès.Un exemple simple pour analyser un JSON comme celui-ci
la source
Tout d'abord, générez Getter et Setter en utilisant le site d'analyse ci-dessous
http://www.jsonschema2pojo.org/
Maintenant, utilisez Gson
Maintenant, utilisez object pour obtenir des valeurs telles que des données, translationText
la source
Vous pouvez utiliser une requête JsonPath pour extraire la valeur. Et avec JsonSurfer qui est soutenu par Gson, votre problème peut être résolu par simplement deux lignes de code!
la source
Code d'une ligne:
la source