2013-01-09 33 views
34

Come convertire elenco generico di JSON in Java.I hanno classe come questa ..Come convertire List per JSON in Java

public class Output 
{ 
    public int Keyname { get; set; } 
    public Object outputvalue{ get; set; } //outvalue may be even a object collection 
} 

List<Output> outputList = new List<Output>(); 

voglio convertire outputlist in JSON in Java.After conversione invierò al cliente.

+0

Questo è piuttosto difficile se si conosce solo il valore di uscita è un 'Oggetto'. Non possiamo neanche supporre che sia serializzabile. – Henry

+0

si assume che tutte le classi siano serializzabili – vmb

+1

possibile duplicato di [come convertire un elenco di dati in json] (http://stackoverflow.com/questions/8182391/how-to-convert-a-list-of-data-to- json) – Gabriel

risposta

82

Utilizzare la libreria GSON per questo. Ecco il codice di esempio

List<String> foo = new ArrayList<String>(); 
foo.add("A"); 
foo.add("B"); 
foo.add("C"); 

String json = new Gson().toJson(foo); 

Qui è la dipendenza Maven per GSON

<dependencies> 
    <!-- Gson: Java to Json conversion --> 
    <dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>2.2.2</version> 
     <scope>compile</scope> 
    </dependency> 
</dependencies> 

Oppure si può scaricare direttamente vaso da qui e metterlo nel vostro percorso di classe

http://code.google.com/p/google-gson/downloads/detail?name=gson-1.0.jar&can=4&q=

Per inviare Json al client è possibile utilizzare la primavera o in semplice servlet aggiungere questo codice

response.getWriter(). Write (json);

+0

Come rimuovere null da json se la lista contiene null. – rahul

+0

Come appare l'output? –

+2

bella risposta semplice e breve !!! – Naveen

9

Per questo è necessaria una libreria esterna.

JSONArray jsonA = JSONArray.fromObject(mybeanList); 
System.out.println(jsonA); 

Google GSON è uno di tali librerie

Si può anche dare un'occhiata here per gli esempi su come convertire la raccolta oggetto Java per stringa JSON.

4

Vedere la libreria google gson. Fornisce una ricca API per affrontare questo ed è molto semplice da usare.

+0

puoi spiegarlo con il codice – vmb

+1

@vbm - https://sites.google.com/site/ gson/gson-user-guide # TOC-Collections-Esempi –

3

Prova questo:

public void test(){ 
// net.sf.json.JSONObject, net.sf.json.JSONArray  

List objList = new ArrayList(); 
objList.add("obj1"); 
objList.add("obj2"); 
objList.add("obj3"); 
HashMap objMap = new HashMap(); 
objMap.put("key1", "value1"); 
objMap.put("key2", "value2"); 
objMap.put("key3", "value3"); 
System.out.println("JSONArray :: "+(JSONArray)JSONSerializer.toJSON(objList)); 
System.out.println("JSONObject :: "+(JSONObject)JSONSerializer.toJSON(objMap)); 
} 

è possibile trovare API here.

2

Per semplicità e ben strutturato sake, utilizzare SpringMVC. È così semplice

@RequestMapping("/carlist.json") 
public @ResponseBody List<String> getCarList() { 
    return carService.getAllCars(); 
} 

di riferimento e di credito: https://github.com/xvitcoder/spring-mvc-angularjs

0

Usa GSONBuilder con setPrettyPrinting e disableHtml per l'uscita bello.

String json = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping(). 
          create().toJson(outputList ); 
        fileOut.println(json);