我有一个JPA投影,它返回这样的响应:

[
    {
        "active": 0,
        "created_at": "2023-11-07T18:06:56",
        "blocked": 0
    },
    {
        "active": 13,
        "created_at": "2023-12-07T18:06:56",
        "blocked": 0
    }
]

根据这一预测:

    List<CompaniesResult > result = .....;
    return new ResponseEntity<>(result, HttpStatus.OK);

    public interface CompaniesResult {
    
        LocalDateTime getCreated_at();
    
        Integer getActive();
    
        Integer getBlocked();
    }

我想像这样返回结果:

{
    "2023-11-07T18:06:56" : { "active": 0, "blocked": 0},
    "2024-11-07T18:06:56" : { "active": 20, "blocked": 10}
{

你知道我怎样才能转换这个Java列表吗?

推荐答案

我不确定你的确切要求,但我可能会以另一种方式返回它.但是如果你想这样返回它,你可以使用嵌套映射:

public ResponseEntity<Map<String, Map<String, Integer>>> companyResults() {
    List<CompaniesResult> result = ...; // 
    
    // Create a Map to store the converted data
    Map<String, Map<String, Integer>> convertedData = new HashMap<>();
    
    for (CompaniesResult company : result) {
        LocalDateTime createdAt = company.getCreated_at();
        Integer active = company.getActive();
        Integer blocked = company.getBlocked();
        
        Map<String, Integer> innerJson = new HashMap<>();
        innerJson.put("active", active);
        innerJson.put("blocked", blocked);
        
        convertedData.put(createdAt.toString(), innerJson);
    }
    
    // Return the map as a JSON response
    return new ResponseEntity<>(convertedData, HttpStatus.OK);
}

Java相关问答推荐

如何在Android上获取来电信息

强制Mockito返回null而不是emtpy list

需要一个找不到的jakarta.sistence.EntityManager类型的Bean

给定Java枚举类,通过值查找枚举

我需要生成一个文件来整合每个特性执行的所有JSON结果

当涉及到泛型时,类型推理在Java中是如何工作的?

Spring data JPA/Hibernate根据id获取一个列值

为什么S的文档中说常量方法句柄不能在类的常量池中表示?

基于配置switch 的@Controller的条件摄取

AbstractList保证溢出到其他方法

获取所有可以处理Invent.ACTION_MEDIA_BUTTON Android 13 API33的Android包

在Java中使用StorageReference将数据从Firebase存储添加到数组列表

为什么没有加载java.se模块?

具有多个分析模式的复杂分隔字符串的正则表达式

我无法在我的Spring Boot应用程序中导入CSV依赖项

如何在Spring Boot中为不同的部署环境管理多个.properties文件?

由于可为null,无法在kotlin中实现java接口

如何以事务方式向ibmmq发送消息

原始和参数化之间的差异调用orElseGet时可选(供应商)

SonarQube在合并升级到java17后对旧代码提出错误