Quali sono alcuni buoni strumenti per convertire rapidamente e facilmente XML in JSON in Java?
import net.sf.json.JSONObject;
oppure import org.json.JSONObject;
. Inoltre quale vaso devo includere?
Quali sono alcuni buoni strumenti per convertire rapidamente e facilmente XML in JSON in Java?
import net.sf.json.JSONObject;
oppure import org.json.JSONObject;
. Inoltre quale vaso devo includere?
Risposte:
JSON in Java ha alcune grandi risorse.
Dipendenza da Maven:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
XML.java
è la classe che stai cercando:
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());
}
}
}
L'output è:
{"test": {
"attrib": "moretest",
"content": "Turn this to JSON"
}}
import net.sf.json.JSONObject;
oppure import org.json.JSONObject;
. Inoltre quale vaso devo includere?
<test attrib="moretest" content="foo">bar</test>
?
Per convertire il file XML in JSON includere la seguente dipendenza
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20140107</version>
</dependency>
e puoi scaricare Jar dal repository Maven qui . Quindi implementare come:
String soapmessageString = "<xml>yourStringURLorFILE</xml>";
JSONObject soapDatainJsonObject = XML.toJSONObject(soapmessageString);
System.out.println(soapDatainJsonObject);
L'unico problema con JSON in Java è che se il tuo XML ha un unico figlio, ma è un array, lo convertirà in un oggetto anziché in un array. Ciò può causare problemi se si converte sempre dinamicamente da XML a JSON, dove se l'XML di esempio ha solo un elemento, si restituisce un oggetto, ma se ha 2+, si restituisce un array, che può causare problemi di analisi per le persone che utilizzano il JSON.
La classe XML2JSON di Infoscoop ha un modo di taggare gli elementi che sono array prima di eseguire la conversione, in modo che gli array possano essere mappati correttamente, anche se nell'XML è presente un solo figlio.
Ecco un esempio di come usarlo (in una lingua leggermente diversa, ma puoi anche vedere come vengono usate le matrici dal metodo nodelist2json () del link XML2JSON).
<results><result><value>1</value></result></results>
, genererebbe { "results" : { "result" : { "value" : "1" } } }
o { "results" : [ { "result" : { "value" : "1" } } ] }
Ho caricato il progetto che puoi aprire direttamente in Eclipse ed eseguirlo, tutto https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA
Grazie
Ho trovato questo in modo semplice e veloce: usato: org.json.XML
classe da 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());
}
Non so quale sia il tuo esatto problema, ma se stai ricevendo XML e vuoi restituire JSON (o qualcosa del genere) potresti anche guardare JAX-B. Questo è uno standard per il marshalling / il non marshalling di POJO Java su XML e / o Json. Esistono più librerie che implementano JAX-B, ad esempio CXF di Apache.