2014-04-25 50 views
0

我想打造的方式一個JSON:如何使用Java序列化一個方便的子JSON與子集合?

{"total":1,"rows":[{"id":1,"name":"Chai","price":18.00}],"footer":[{"name":"Total","price":18.00}]} 

,獲得這一實例來自:http://www.jeasyui.com/tutorial/datagrid/datagrid17.php

這是強制性的,我有一個「總」屬性與某個值,並且「行」財產與集合引用它,就像上面的例子。

考慮到對於「rows」屬性,實際上我有一組java對象,在List<Properties>集合中,有「id」,「name」和「price」的值對。

注意:我使用GSon(https://sites.google.com/site/gson/gson-user-guide)將一組屬性串聯起來,但我沒有實現爲該UI正確生成有效的json。

代碼:

 Collection<Atividade> listProducts = storeService.getListPaged(category, rows, page); 

     long qty = storeService.getTotal(category); 

     List<Properties> lp = new LinkedList<Properties>(); 

     for (Item i : listProducts) { 
      Properties prop = new Properties(); 

      prop.setProperty("id", Long.toString(i.getId())); 
      prop.setProperty("name", i.getName()); 
      prop.setProperty("price", i.getPrice); 
      lp.add(prop); 
     } 

     Object[][] array = { 
      {"total",qty}, 
      {"rows", lp} 
     }; 

     Gson gson = new GsonBuilder().setDateFormat("dd-MM-yyyy") 
       .setPrettyPrinting().create(); 


     gList = gson.toJson(array); 

此代碼從上面產生的,而不是下列結果:

[ 
    [ 
    "total", 
    1 
    ], 
    [ 
    "rows", 
    [ 
     { 
     "id": "1", 
     "name": "Chai", 
     "price": "18.00", 
     }, 
    ] 
    ] 
] 

謝謝!

+1

什麼問題? –

+0

我不知道如何創建一組屬性,其中已存在的屬性列表將被轉換爲有效的Json,以便實現UI所需的格式。我試圖用數組來做,但是生成的Json是用錯誤的方括號生成的,我懷疑是不是在界面對象中正確呈現。 – Alex

+0

如果你展示你已經嘗試過的東西,人們會比從頭開始爲你設計一個答案更願意幫忙。 – pennstatephil

回答

0

的JSON你想生成

{"total":1,"rows":[{"id":1,"name":"Chai","price":18.00}],"footer":[{"name":"Total","price":18.00}]} 

是一個JSON對象。因此,您不能使用陣列

Object[][] array = { 
     {"total",qty}, 
     {"rows", lp} 
}; 

來生成它。

取而代之的是,創建一個POJO類,其中包含所需的每個JSON名稱/值對的字段。一個用於total(這是一個數字),一個用於rows(這是一個數組/屬性列表),另一個用於footer這是一些其他對象)。

然後,您可以創建一個對象,初始化其字段,並使用Gson(或其他JSON序列化程序)對其進行序列化。