2017-03-09 44 views
1

嵌套JSON格式我有一個像下面想從休眠狀態JSON響應

[{"Name":"kannur hub","Amount":1840.00},{"Name":"Calicut Hub","Amount":7000.00}] 

我想是這樣的,而不是上面的格式

[{"name":"kannur hub","TotalAmount":1840,"child":[{"sub":"Sale Of Products @ 12 % Tax","amount":345,"sub":"sos","amount":1020,"sub":"Boss","amount":475}]},{"name":"Calicut Hub","TotalAmount":7000,"child":[{sub":"cop","amount":3500,"sub":"SALES ACCOUNT","amount":3500}]}] 

所以每當我找回孩子從休眠分組一個JSON JSON響應投影,結果去掉總和值並返回個別值

[{"sub":"Boss","Name":"kannur hub","Amount":475.00},{"sub":"sos","Name":"kannur hub","Amount":1020.00},{"sub":"cop","Name":"Calicut Hub","Amount":3500.00},{"sub":"SALES ACCOUNT","Name":"Calicut Hub","Amount":3500.00},{"sub":"Sale Of Products @ 12 % Tax","Name":"kannur hub","Amount":345.00}] 

hibe rnate查詢,

ProjectionList proj = Projections.projectionList(); 
     proj.add(Projections.groupProperty("offId.officeProfileName").as("Name")); 
     proj.add(Projections.groupProperty("accId.accHeadName").as("sub")); 
     proj.add(Projections.sum("accountsDataValue").as("Amount")); 
     crit.setProjection(proj); 

蔭春用啓動應用程序和PostgreSQL數據庫與Java 1.8版

回答

1

你應該創建一個自定義的DTO,如果你想達到的效果你想要的JSON,請參見下面的例子。

class Child { 
    String sub; 
    Long amount; 
} 

class Dto { 
    String name; 
    Long totalAmount; 
    List<Child> child; 
} 

然後組成你的Dto並添加必要的孩子。下面是例子,假設你已經從數據庫的結果:

如果你的RS回報是List<Child>,那麼你可以做到這一點..

Dto dto = new Dto(); 
dto.addAll(rs); 
dto.setName("name"); 
dto.setTotalAmount(totalAmount); 
return dto; 

,或者RS效果不List<Child>你可以這樣做...

Dto dto = new Dto(); 
//assumed rs contains the db child results. 
for(int i=0; i<rs.length; i++) { 
    Child child = new Child(rs.get("sub"), rs.get("amount")) 
    dto.getChild().add(child) 
} 
dto.setName("name"); 
dto.setTotalAmount(totalAmount); 
return dto; 

有效產生JSON是象下面這樣:

{ 
     "name":"kannur hub", 
     "TotalAmount":1840, 
     "child":[ 
      { 
       "sub":"Sale Of Products @ 12 % Tax", 
       "amount":345, 
      }, 
      { 
       "sub":"sos", 
       "amount":1020, 
      }, 
      { 
       "sub":"Boss", 
       "amount":475 
      } 
     ] 
    }, 
    { 
     "name":"Calicut Hub", 
     "TotalAmount":7000, 
     "child":[ 
      { 
       "sub":"cop", 
       "amount":3500 
      }, 
      { 
       "sub":"SALES ACCOUNT", 
       "amount":3500 
      } 
     ] 
    } 
+0

你可能是更具體,尤其是在創建DTO類後 – user7682587

+0

請檢查上面更新的示例。 – imprezzeb