-1
votes

Essayez d'obtenir une valeur d'une chaîne JSON

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 xxx

Ceci est la chaîne JSON que je reçois xxx

s'il vous plaît quelqu'un peut-il m'aider à ce sujet?


3 commentaires

Avez-vous essayé d'utiliser xmltojson.getjsonObject ("prix"); ? À 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).


3 Réponses :


0
votes

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.


0 commentaires

0
votes

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>


6 commentaires

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 mais ici il n'y avait rien de tel que l'objet de résultat. Et assurez-vous également de toujours garder la valeur sous le prix objet . 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 ();



0
votes

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


0 commentaires