2016-05-03 7 views
1

Ich habe eine Liste, und ich möchte es in Json konvertieren.konvertieren von der Liste zu JSON in Java

Hier ist mein Code

JqGridModel gridModel1 = new JqGridModel(); 
Date FromDate = new Date("1996-07-04"); 
Date ToDate = new Date("1996-07-05"); 
gridModel1.setOrderID(10248); 
gridModel1.setFromDate(FromDate); 
gridModel1.setToDate(ToDate); 
gridModel1.setCustomerID("WILMK"); 
gridModel1.setShipName("Vins et alcools Chevalier"); 

JqGridModel gridModel2 = new JqGridModel(); 
Date FromDate2 = new Date("1996-07-04"); 
Date ToDate2 = new Date("1996-07-05"); 
gridModel2.setOrderID(10248); 
gridModel2.setFromDate(FromDate2); 
gridModel2.setToDate(ToDate2); 
gridModel2.setCustomerID("WILMK"); 
gridModel2.setShipName("Vins et alcools Chevalier"); 



List jqGridModels = new ArrayList(); 
jqGridModels.add(gridModel1); 
jqGridModels.add(gridModel2); 

Und ich will es konvertieren in folgendem Format zu sein:

{ 
    "rows":[ 
     {"OrderID":"10248","FromDate":"1996-07-04","CustomerID":"WILMK","ShipName":"Vins et alcools Chevalier","ToDate":"1996-07-05"}, 
     {"OrderID":"10249","FromDate":"1996-07-05","CustomerID":"TRADH","ShipName":"Toms Spezialit\u00e4ten","ToDate":"1996-07-17"}, 
     {"OrderID":"10250","FromDate":"1996-07-08","CustomerID":"HANAR","ShipName":"Hanari Carnes","ToDate":"1996-07-26"}, 
     {"OrderID":"10251","FromDate":"1996-07-08","CustomerID":"VICTE","ShipName":"Victuailles en stock","ToDate":"1996-08-01"}, 
     {"OrderID":"10252","FromDate":"1996-07-09","CustomerID":"SUPRD","ShipName":"Supr\u00eames d\u00e9lices","ToDate":"1996-08-01"} 
    ] 
} 

Jede Hilfe wäre sehr dankbar.

+2

Verwenden Sie eine Json-Bibliothek wie Jackson. – aioobe

+2

Mögliches Duplikat von [So konvertieren Sie die Liste nach Json in Java] (http://stackoverflow.com/questions/14228912/how-to-convert-list-to-json-in-java) –

+0

versuchen Sie dies >> https: //stackoverflow.com/questions/14228912/how-to-convert-list-to-json-in-java –

Antwort

1

Wenn Sie es tun wollen manuell können Sie:

Erstellen Sie eine Methode, die JSON von Tour-Objekt zu generieren:

class JqGridModel{ 

    public JSONObject toJSON(){ 
     JSONObject json = new JSONObject(); 
     json.accumulate("OrderID", orderID); 
     // DO the same for all attributes 
     return json; 
    } 
} 

Und dann diese Methode aufrufen, auf der Liste Inhalt Looping:

JSONObject json = new JSONObject(); 
JSONArray arr = new JSONArray(); 
for(JqGridModel m: jqGridModels){ 
    arr.put(m.toJSON()); 
} 
json.accumulate("rows", arr); 
2

Erstens: Verwendung Generika

List jqGridModels = new ArrayList(); //bad 
List<JqGridModel> jqGridModels = new ArrayList<>(); //good 

Zweitens: Können Sie Gson verwenden?

List<JqGridModel> jqGridModels = new ArrayList<>(); 

Gson gson = new Gson(); 
JsonElement jsElem = gson.toJsonTree(jqGridModels, new TypeToken<List<JqGridModel>>() {}.getType()); 

if (! jsElem.isJsonArray()) { 
    //this is an error... 
} 

JsonArray jsonArray = jsElem.getAsJsonArray(); 

habe es noch nicht getestet, aber es sollte funktionieren, bin ich in meinem Projekt zu tun und es ist in Ordnung, wenn Sie mehr Sorgen haben mir bitte sagen!

0
com.fasterxml.jackson.databind.ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper(); 
    StringBuffer result = new StringBuffer("{\n\t\"rows\":[\n"); 
    try { 
     for(Object item : jqGridModels){ 
      result = result.append("\t\t\t"); 
      result = result.append(mapper.writeValueAsString(item)); 
      result = result.append("\n"); 
     } 
     if(jqGridModels.size() > 1){ 
      result = result.append("\t]\n}"); 
      System.out.print(result); 
     } 
    } catch (JsonProcessingException e) { 
     e.printStackTrace(); 
    } 
Verwandte Themen