2013-05-31 3 views
0

J'ai besoin de générer la chaîne JSON en format suivant:Comment générer une chaîne JSON au format requis en JAVA?

[{"param1":"value1","param2":"value2"},{"param1":"value3","param2":"value4"}] 

J'ai essayé de stocker des données de manière suivante:

JSONArray jsonArray = JSONArray(); 

HashMap<String, String> hmap = new HashMap<String, String>(); 
hmap.put("param1", "value1"); 
hmap.put("param2", "value2"); 
jsonArray.add(hmap); 

hmap = new HashMap<String, String>(); 
hmap.put("param1", "value3"); 
hmap.put("param2", "value4"); 
jsonArray.add(hmap); 

System.out.print(jsonArray.toString()); 

Mais il a généré la chaîne JSON en format suivant:

["{param1:value1,param2:value2}", "{param1:value3,param2:value4}"] 

Quels sont les changements nécessaires pour obtenir la chaîne au format requis?

+1

http://stackoverflow.com/q/11143363/1007273 + http://json.org/java/ – hovanessyan

Répondre

1

Cela devrait fonctionner. Utilisez JSONObject à la place d'une map et ajoutez-les à JSONArray.

JSONArray jsonArray = new JSONArray(); 

JSONObject jsonObject1= new JSONObject(); 
JSONObject jsonObject2= new JSONObject(); 

jsonObject1.put("param1", "value1"); 
jsonObject1.put("param2", "value2"); 
jsonArray.add(jsonObject1); 


jsonObject2.put("param1", "value3"); 
jsonObject2.put("param2", "value4"); 
jsonArray.add(jsonObject2); 

System.out.print(jsonArray.toString()); 

Je suggère une meilleure alternative pour utiliser une bibliothèque tierce telle que XStream, qui le fait pour vous.

+0

Veuillez essayer et faites-le savoir si cela fonctionne –

0

Utilisez Jettison et il fera exactement ce que vous voulez

org.codehaus.jettison.json.JSONArray d'importation;

public class JSONPrintTest étend TestCase {

public void testPrinting(){ 
    JSONArray jsonArray = new JSONArray(); 

    HashMap<String, String> hmap = new HashMap<String, String>(); 
    hmap.put("param1", "value1"); 
    hmap.put("param2", "value2"); 
    jsonArray.put(hmap); 

    hmap = new HashMap<String, String>(); 
    hmap.put("param1", "value3"); 
    hmap.put("param2", "value4"); 
    jsonArray.put(hmap); 

    System.out.print(jsonArray.toString()); 
} 

}

Sortie: [{ "param1": "value1", "param2": "valeur2"}, { "param1": » value3 "," param2 ":" value4 "}]

Questions connexes