【问题标题】:want nested json format from hibernate json response想要来自休眠 json 响应的嵌套 json 格式
【发布时间】: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 数据库

【问题讨论】:

    标签: java json postgresql spring-boot


    【解决方案1】:

    如果你想获得你想要的json结果,你应该创建一个自定义的DTO,请看下面的例子。

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

    然后编写您的 Dto 并添加必要的子级。下面是示例,假设您已经从 db 中获得了结果:

    如果你的 rs 返回是 List&lt;Child&gt; 那么你可以这样做..

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

    或者如果 rs 结果不是 List&lt;Child&gt; 你可以这样做...

    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 类之后
    猜你喜欢
    • 1970-01-01
    • 2020-09-07
    • 2021-05-31
    • 2020-02-14
    • 2016-09-03
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 2021-10-30
    相关资源
    最近更新 更多