想要来自休眠 json 响应的嵌套 json 格式
Posted
技术标签:
【中文标题】想要来自休眠 json 响应的嵌套 json 格式【英文标题】:want nested json format from hibernate json response 【发布时间】:2017-07-30 00:55:15 【问题描述】:我有如下的 json 响应
["Name":"kannur hub","Amount":1840.00,"Name":"Calicut Hub","Amount":7000.00]
我想要一个这样的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]]
因此,每当我从休眠投影中检索子分组时,结果都会删除总和值并返回单个值
["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]
休眠查询是,
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);
我正在使用 java 1.8 版本的 spring boot 应用程序和 postgresql 数据库
【问题讨论】:
【参考方案1】:如果你想获得你想要的json结果,你应该创建一个自定义的DTO,请看下面的例子。
class Child
String sub;
Long amount;
class Dto
String name;
Long totalAmount;
List<Child> child;
然后编写您的 Dto 并添加必要的子级。下面是示例,假设您已经从 db 中获得了结果:
如果你的 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
]
【讨论】:
您能否更具体一些,尤其是在创建 DTO 类之后以上是关于想要来自休眠 json 响应的嵌套 json 格式的主要内容,如果未能解决你的问题,请参考以下文章
如何为来自 SpringBoot 后端代码的嵌套 JSON 响应在 angular8(TypeScript) 或更高版本中定义模型类