J'ai écrit une application qui convertit XML vers JSON, j'essaie d'obtenir la valeur "Contenu" du JSON, mais je ne peux pas l'obtenir. Je reçois uniquement le fichier complet, je ne peux pas atteindre la valeur "Contenu" qui me donne la valeur de prix dont j'avais besoin.
Voici la partie de code p> Ceci est la chaîne JSON que je reçois p> s'il vous plaît quelqu'un peut-il m'aider à ce sujet? P> p>
3 Réponses :
Vous pouvez utiliser l'API Java Jackson Jar dans votre application pour convertir XML au format JSON. Il lie d'abord les données directement à un objet Java. Il crée une instance de XMLMapper et à l'aide de sa méthode ReadValue, elle lit le contenu du fichier XML. Il écrit le contenu du format JSON à l'aide de la classe ObjectMapper. P>
Vous pouvez le faire avec Jackson.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.8.2</version>
</dependency>
Quand je le débogé, il s'arrête à "livraison" et retourne une exception e
Quelle exception est-elle lancée? J'ai été exiguré sur la machine et bien travailler
java.lang.nullPointereException: tentative d'invoquer la méthode virtuelle 'com.fasterxml.jackson.databind.jsonnode com.fasterxml.jackson.databind.jsonnode.get (java.lang.jsonnode.get (java.lang.string)' sur une référence objet nulle
Il semble que les données JSON ne contiennent pas les clés données. Pouvez-vous vérifier les données JSON provenant de l'URL?
{"PLZ": "87484", "Taxrate": "19", "Livraisons": {"Livraison": {"Conlevé OdingPoints": "1", "L ITRE": "1000", "Prix" : {"Oilgrade": "Heizöl standard schwefelarm", "orderlink": " heizoel24.de/bestellung/8", "": "67, 78 "}}}}
Voir que JSON que vous avez mentionné en question a l'objet de base appelé résultat code> mais ici il n'y avait rien de tel que l'objet de résultat. Et assurez-vous également de toujours garder la valeur code> code> sous le prix code> objet code>. et essayez le code ci-dessous pour JSON donnée ci-dessus. Java Jsonnode Prix = Nouveau ObjectMapper () .ValueTotree (Jsonnode) .get ("livraisons") .get ("livraison") .get ("prix"); Contenu de chaîne = prix.get ("content"). Astext (); code>
J'ai trouvé une solution et je travaille!
try {
jsonObj = XML.toJSONObject(s); // XML to Json
JSONObject result1 = jsonObj.getJSONObject("result"); // gets top level object
JSONObject deliveries = result1.getJSONObject("deliveries"); // get deliveries "collection" (Not a collection in this case)
JSONObject delivery = deliveries.getJSONObject("delivery"); // get price object (both properties and content)
JSONObject priceObj = delivery.getJSONObject("price"); // get price object (both properties and content)
String oilGrade = priceObj.getString("oilGrade"); // get the oilGrade
String price = priceObj.getString("content"); // get the price
afterValue = price.replace(',', '.'); //replace the , with an . to work with a double .
double priceDouble = Double.parseDouble(afterValue); //parse the String to a Double
Avez-vous essayé d'utiliser
xmltojson.getjsonObject ("prix"); code>? À la 2ème ligne de code.Oui ça ne renvoie rien.
La bibliothèque de Sans-Java a une méthode statique U.get (carte, chemin).