Spring Responsebody,在json中命名List对象

时间:2017-06-06 10:27:38

标签: java json spring-boot spring-restcontroller spring-mybatis

我正在使用Spring Framework的spring-boot库开发REST服务。 我从我的服务获得JSON响应,我的问题是我使用父类来存储作为请求结果发送的所有对象,并且响应在JSON数组上没有名称发送。

这是我的一个测试的输出:

ansible-play -i myapp1 main.yml
    or
ansible-play -i myapp2 main.yml

这就是我试图获得的结果:

success: true,
message: null,
data: [
{ },
{
vehicleBatteryId: 3,
modelTypeId: 3,
cycleCount: -9640,
currentCapacity: -9640,
manufactureDate: 414037682000,
manufacturerId: 10,
modeTypeCode: 461271880,
partStatus: 215692740,
lastMaintenanceDate: 428880743000
},
{
vehicleBmsId: 3,
bmsModelId: 5,
manufactureDate: 942436247000,
manufacturerId: 4,
lastMaintenanceDate: 437823118000,
partStatus: 477293493,
replaceDate: 179716409000,
replaceDistance: 4783810
}...

这是父类。我希望能够将其用于我的服务创建的每个响应,而不管该响应的详细信息

success: true,
message: null,
data: {
Property1:{ },
Property2:{
vehicleBatteryId: 3,
modelTypeId: 3,
cycleCount: -9640,
currentCapacity: -9640,
manufactureDate: 414037682000,
manufacturerId: 10,
modeTypeCode: 461271880,
partStatus: 215692740,
lastMaintenanceDate: 428880743000
},...

有人有什么想法吗?据我所知,Spring使用Jackson转换为json,我正在探索我能用他们现在提供的json视图函数做些什么。

1 个答案:

答案 0 :(得分:1)

你正在使用一个ArrayList,Jackson序列化为[{...},{...},...] 您可以使用Map(即HashMap<>)作为数据,但您可能需要创建自定义“push()”或add()函数,以保持索引符合性。即Property1。

HashMap对象将被序列化为:data:{“index-1”:{...},“index-2”:{...} ...}

代码的简单示例:

    private Map<String, Object> data;
    int nextIndex = 1;

    private void init(){
        this.data = new HashMap<String, Object>();
    }

    public void addModel(Object newModel){
            this.data.add("Property" + this.nextIndex, newModel);
            this.nextIndex++;
    }