web-dev-qa-db-fra.com

Le moyen le plus rapide de convertir XML en JSON dans Java

Quels sont les bons outils pour convertir rapidement et facilement XML en JSON en Java?

159
BeachRunnerFred

JSON en Java dispose d'excellentes ressources.

Dépendance Maven:

<dependency>
  <groupId>org.json</groupId>
  <artifactId>json</artifactId>
  <version>20180813</version>
</dependency>

XML.Java est la classe que vous recherchez:

import org.json.JSONObject;
import org.json.XML;

public class Main {

    public static int PRETTY_PRINT_INDENT_FACTOR = 4;
    public static String TEST_XML_STRING =
        "<?xml version=\"1.0\" ?><test attrib=\"moretest\">Turn this to JSON</test>";

    public static void main(String[] args) {
        try {
            JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING);
            String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
            System.out.println(jsonPrettyPrintString);
        } catch (JSONException je) {
            System.out.println(je.toString());
        }
    }
}

La sortie est:

{"test": {
    "attrib": "moretest",
    "content": "Turn this to JSON"
}}
162
danieltalsky

Pour convertir un fichier XML en JSON, incluez la dépendance suivante

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20140107</version>
</dependency>

et vous pouvez Téléchargez le fichier Jar depuis le référentiel Maven ici . Ensuite, implémentez comme:

String soapmessageString = "<xml>yourStringURLorFILE</xml>";
JSONObject soapDatainJsonObject = XML.toJSONObject(soapmessageString);
System.out.println(soapDatainJsonObject);
52
Krishna

Le seul problème avec JSON en Java est que si votre XML a un seul enfant, mais est un tableau, il sera converti en objet au lieu d'un tableau. Cela peut poser des problèmes si vous convertissez toujours dynamiquement du XML au JSON, où si votre exemple XML ne comporte qu'un seul élément, vous retournez un objet, mais s'il contient 2+, vous renvoyez un tableau, ce qui peut entraîner des problèmes d'analyse pour les utilisateurs du. JSON.

La classe XML2JSON d'Infoscoop dispose d'un moyen de baliser les éléments qui sont des tableaux avant d'effectuer la conversion, afin que les tableaux puissent être correctement mappés, même s'il n'y a qu'un seul enfant dans le code XML.

Voici n exemple d'utilisation (dans une langue légèrement différente, mais vous pouvez également voir comment les tableaux sont utilisés à partir de la méthode nodelist2json () du lien XML2JSON).

28
Marcus

J'ai téléchargé le projet que vous pouvez ouvrir directement dans Eclipse et exécuter c'est tout https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA

Merci

3
pareshm

Je ne sais pas quel est votre problème exact, mais si vous recevez du XML et que vous voulez renvoyer du JSON (ou quelque chose du genre), vous pouvez aussi regarder JAX-B. Il s'agit d'une norme pour le marshalling/unmarshalling Java POJO en XML et/ou Json. Plusieurs bibliothèques implémentent JAX-B, par exemple le fichier CXF d’Apache.

1
Martin Sturm

J'ai trouvé cela rapidement et facilement: Utilisé: Classe org.json.XML de Java-json.jar

        if (statusCode == 200 && inputStream != null) {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
            StringBuilder responseStrBuilder = new StringBuilder();

            String inputStr;
            while ((inputStr = bufferedReader.readLine()) != null) {
                responseStrBuilder.append(inputStr);
            }

            jsonObject = XML.toJSONObject(responseStrBuilder.toString());
        }
1
horizon7