Creato da pastuweb.com
Share My Page
My Social Accounts
Account FaceBook Account LinkedIn Account Twitter Account Google Plus Account Git Hub

In questo tutorial vedremo come convertire una stringa in formato JSON in una staringa in formato XML.

Come prima cosa bisogna scaricare e importare nel classpath del progetto queste classi:

  • JSONArray.java
  • JSONException.java
  • JSONObject.java
  • JSONString.java
  • JSONStringer.java
  • JSONTokener.java
  • JSONWriter.java

Queste classi le potete reperire dal sito json.org. Di sicuro un online è presente qualche JAR che incorpora tutte queste classi sotto un unico package. Potete scaricare il JAR da qui.

Veniamo al codice Java.

Ipotizzo che la stringa JSON chiamata "json_data" e abbia questo contenuto:

{"appunto_autore": "Pasturenzi Francesco",

"appunto_titolo": "Come creare un XML da un JSON",

"appunto_descr": "Qui la descrizione del titolo in questione" }

Di seguito il codice Java:

package appuntivari.json.test;
 
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.json.JSONException;
import org.json.JSONObject;
 
public class TestJSONtoXML {
 
public static Log log = LogFactory.getLog("TestJSONtoXML");
 
public static void main(String[] args) throws JSONException {
 
String json_data ="{\"appunto_autore\": \"Pasturenzi Francesco\",
\"appunto_titolo\": \"Come creare un XML da un JSON\",
\"appunto_descr\": \"Qui la descrizione del titolo in questione\" }";
if(json_data != null){
 
log.info("json_data = "+json_data);
 
 
log.info("\nLeggo il JSON:");
JSONObject jsonObject = new JSONObject(json_data);
 
String autore = jsonObject.getString("appunto_autore");
log.info("appunto_autore = "+autore);
 
String titolo = jsonObject.getString("appunto_titolo");
log.info("appunto_titolo = "+titolo);
 
String descrizione = jsonObject.getString("appunto_descr");
log.info("appunto_descr = "+descrizione);
 
/*Genero la mappa*/
Map<String, String> mappaParametri = new LinkedHashMap<String, String>();
mappaParametri.put(new String("autore"), autore);
mappaParametri.put(new String("titolo"), titolo);
mappaParametri.put(new String("descrizione"), descrizione);
 
log.info("\n Genero XML.");
generaXML(mappaParametri);
 
}
 
}
 
 
private static void generaXML(Map<String, String> mappa){
 
String entry = "";
for (Entry<String, String> entryMap : mappa.entrySet()) {
entry += "    <"+entryMap.getKey()+">"+entryMap.getValue().toString()+"</"+entryMap.getKey()+">\n"; 
}
 
String XMLstring = 
"\n<appunti>\n" +
" <appunto>\n" +
entry +
" </appunto>\n"+
"</appunti>";
 
log.info(XMLstring);
}
 
}
 
In questo esempio mi sono appoggiato alla classe Map di Java per la creazione delle entry XML. Da notare che esistono diversi tipi di mappe:
  • HashMap 
  • TreeMap
  • LinkedHashMap
Ho usato "new LinkedHashMap<String, String>()" perchè mi serve che le entry nel XML siano nell'ordine inserito nella mappa con i put().
Se invece volessi ordinare alfabeticamente i tag XML allora devo usare una TreeMap. Se invece non mi interessa l'ordine, va benissimo l' HashMap.
 
 
Average (1 Vote)
The average rating is 5.0 stars out of 5.