一、需求
项目中有时候需要返回属性累加结构的数据,例如:
[{
"column0": "d80f37d3-7ba8-4c10-b511-d1a12ddef723",
"column1": "d8e09b51-5c0d-44f0-96c6-89c8ab5fc975",
"column2": "9547f653-18e1-45ec-9cd2-a9b968a98832",
"column3": "102a9f3b-a33e-4007-a734-f21e0eb80a50",
"column4": "061af790-ef58-49fe-85b4-2fc99b23a64c"
},
{
"column0": "2662b0c1-732c-4830-8bdd-4fa3f6dcb76a",
"column1": "998907b4-b92f-4548-b6f4-22b45855b29f",
"column2": "4e92623b-9753-4fd7-8c78-3777920dd8a6",
"column3": "99c9b9eb-91db-4efb-93d5-a7e523cdca88",
"column4": "d2eb07f2-c0f3-4ea6-b700-2eaa2e48d114"
},
{
"column0": "4f79bf59-5f32-4fbd-9249-c23debeede25",
"column1": "912963eb-3b49-480d-98e6-e8df8a191a6f",
"column2": "7c368d07-459c-4304-8666-d2b906ad9f56",
"column3": "2a0b0777-a031-4b05-812d-c56bc6285cd8",
"column4": "6d40c26d-58dc-445a-93e8-0ceab49e121d"
}
]
或者
{
"column0": "3973b4ba-b9eb-43de-8f56-34943dab3802",
"column1": "e559748d-f66c-45a8-80fc-048ef452c630",
"column2": "045a3e88-6e0d-4898-8410-46d5bc06acd7",
"column3": "a2ebdd30-f741-4738-81de-5fe3cfe86482",
"column4": "061e27f8-3d1d-4a3b-b7d4-00ba04674f9d"
}
二、定义实体类
import lombok.Data;
/**
* @Author:
* @Description
* @Date: 下午3:47 2024/1/22
*/
@Data
public class SysEntity {
private String column0;
private String column1;
private String column2;
private String column3;
private String column4;
}
三、定义测试类
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
* @Author:
* @Description
* @Date: 下午3:48 2024/1/22
*/
@Slf4j
@RestController
@RequestMapping("/test")
public class TestFieldController {
@GetMapping("/field")
public String test() {
SysEntity entity = new SysEntity();
for (int i = 0; i < 10; i++) {
setEntityField(entity, i, UUID.randomUUID().toString());
}
return JSONObject.toJSONString(entity);
}
@GetMapping("/list")
public String testList() {
List<SysEntity> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
SysEntity entity = new SysEntity();
Boolean aBoolean = setEntityField(entity, i, UUID.randomUUID().toString());
//判断属性是否存在
if (aBoolean) {
list.add(entity);
}
}
return JSONArray.toJSONString(list);
}
/**
* 给对应的属性赋值
*
* @param entity
* @param index
* @param value
* @return
*/
public static Boolean setEntityField(SysEntity entity, int index, String value) {
boolean flag = false;
String methodName = "";
try {
//手动设置set方法名
methodName = "setColumn" + index;
Method method = entity.getClass().getMethod(methodName, String.class);
// 调用对应的方法设置属性值
method.invoke(entity, value);
flag = true;
// } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
} catch (Exception e) {
// 处理异常 根据实际业务场景,判断是否需要捕获异常.这里我只打印了日志
log.error("实体属性不存在 methodName={}", methodName);
}
return flag;
}
}
四、测试
1、浏览器输入:http://localhost:8876/test/list
2、浏览器输入:http://localhost:8876/test/field