Java 同一个列表,每行的数据类型不一样,返回统一结构

11 篇文章 0 订阅
1 篇文章 0 订阅

一、需求

实际项目中,经常存在不同行,数据结构不一样的情况,但是又不能统一返回字符串格式,需要处理这种问题。
例如:

序号名称面积/金额/占比分数/目标/是否合格联系方式
1面积89.8765.5
2销售达成率67%不合格
3占比90%1013908768723

二、创建父类

import lombok.Data;

@Data
public class ParentData {

    private String id;

    private String name;

}

三、创建子类

有几行创建几个,如果有相同的行的数据结构,不需要重复创建

1、第一行

import lombok.Data;

import java.math.BigDecimal;

@Data
public class ChildOneData extends ParentData {

    private BigDecimal amt;

    private BigDecimal score;

}

2、第二行

import lombok.Data;

import java.math.BigDecimal;

@Data
public class ChildTwoData extends ParentData {

    private String amt;

    private String score;

}

3、第三行

import lombok.Data;

import java.math.BigDecimal;

@Data
public class ChildThreeData extends ParentData {

    private String amt;

    private BigDecimal score;

    private BigDecimal phone;

}

四、编写测试类

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author:
 * @Description
 * @Date: 下午4:16 2024/3/29
 */
@RestController
@RequestMapping("/parent")
public class TestParentChildController {

    @GetMapping("/test")
    public List<ParentData> list() {
        List<ParentData> list = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            switch (i) {
                case 1: //表格第一行
                    ChildOneData childOneData = new ChildOneData();
                    childOneData.setAmt(new BigDecimal("89.87"));
                    childOneData.setScore(new BigDecimal("65.5"));
                    childOneData.setId(i+"");
                    childOneData.setName("面积");
                    list.add(childOneData);
                    break;
                case 2://表格第二行
                    ChildTwoData childTwoData = new ChildTwoData();
                    childTwoData.setAmt("67%");
                    childTwoData.setScore("不合格");
                    childTwoData.setId(i+"");
                    childTwoData.setName("销售达成率");
                    list.add(childTwoData);
                    break;
                case 3://表格第三行
                    ChildThreeData childFourData = new ChildThreeData();
                    childFourData.setAmt("90%");
                    childFourData.setScore(new BigDecimal("10"));
                    childFourData.setPhone(new BigDecimal("13908768723"));
                    childFourData.setId(i+"");
                    childFourData.setName("同比");
                    list.add(childFourData);
                    break;
            }
        }
        return list;
    }
}

五、测试结果

启动项目,浏览器访问 http://localhost:8888/parent/test

[
    {
        "amt": 89.87,
        "id": "1",
        "name": "面积",
        "score": 65.5
    },
    {
        "amt": "67%",
        "id": "2",
        "name": "销售达成率",
        "score": "不合格"
    },
    {
        "amt": "90%",
        "id": "3",
        "name": "同比",
        "phone": 13908768723,
        "score": 10
    }
]
  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值