java - 如何根据 JPA Web API 中的类型将 JSON 数据转换为两种 JSON 数组格式

标签 java json hibernate jersey hql

{
  "code": 200,
  "message": "Success",
  "data": [
    {
      "holidayId": 1,
      "createdAt": 1334925720000,
      "date": "2012-01-26",
      "description": "Republic Day",
      "holidayType": {
        "holidayTypeId": 1,
        "holidayType": "Normal"
      }
    },
    {
      "holidayId": 11,
      "createdAt": 1334925720000,
      "date": "2012-03-23",
      "description": "Ugadi",
      "holidayType": {
        "holidayTypeId": 2,
        "holidayType": "Normal"
      }
    },
    {
      "holidayId": 21,
      "createdAt": 1334925720000,
      "date": "2012-04-06",
      "description": "Good Friday",
      "holidayType": {
        "holidayTypeId": 1,
        "holidayType": "Normal"
      }
    },
    {
      "holidayId": 31,
      "createdAt": 1334925720000,
      "date": "2012-05-01",
      "description": "May Day",
      "holidayType": {
        "holidayTypeId": 2,
        "holidayType": "Normal"
      }
    },
    }
    ]
    }

这是我当前的 JSON 格式:

public CommonResponseModel getLeaveList() {
        EntityManager entityManager = DBManager.getDBManager();
        List<Holiday> result = entityManager.createQuery("FROM Holiday", Holiday.class).getResultList();

        LeavesResponseWrapper model = new LeavesResponseWrapper();
        model.setData(result);
        DBManager.saveAndClosDB(entityManager);
        return model;
        }

这段代码我正在尝试获取当前的 JSON 数据

但是我必须以这种格式获取 JSON 数据所需的格式:

{
 "code": 200,
 "message": "Holiday List",
 "data": {
       "normalHolidays": [
         {
           "name": "Diwali",
           "date": "31-10-2016"
         }
       ],
       "optionalHolidays": [
         {
           "name": "Onam",
           "date": "13-09-2016"
    }
       ]
 }
}

请帮助我如何实现所需的 JSON 格式数据,我们有两个表,一个用于假期,另一个用于假期类型,因为我正在获取该数据,而我必须获取 json 数组,一个用于 TYPE1,另一个用于 type2,我正在使用 Jersey jar,请帮助我如何获取它。

最佳答案

将“数据”的类型从 List<Holiday> 更改为至Map<String,List<Holiday>> .

然后根据holidayType可以将setData()中的数据分开.

Map<String,List<Holiday>> data;
setData(List<Holiday> holidays) {
    List<Holiday> normalHolidays = new ArrayList<Holiday>();
    List<Holiday> optionalHolidays = new ArrayList<Holiday>();

    for(Holiday holiday : holidays) {
        if("Normal".equals(holiday.holidayType.holidayType)) {
            normalHolidays.add(holiday);
        } else {
            optionalHolidays.add(holiday);
        }
    }

    data = new HashMap<String,List<Holiday>>();
    data.put("normalHolidays", normalHolidays);
    data.put("optionalHolidays", optionalHolidays);
}

关于java - 如何根据 JPA Web API 中的类型将 JSON 数据转换为两种 JSON 数组格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38320241/

相关文章:

java - 在 Java 中通过标题解析特定列

java - 如何在 Guice 中绑定(bind)池(没有太多样板)?

javascript - jquery 验证插件中的转义点

java - 在 Java 8 lambda 中使用时,EJB 调用缺少调用者主体

java - DataJPATest Junit 方法命名和 NullPointerExceptions

java - 根据操作系统动态加载 jar

java - 如果订阅者出现故障,TIBCO EMS 会通知发布者

java - 写 DAO : how to override or implements the interface methods in abstract class?

javascript - @符号打破 Angular 表达

java - 限制 Spring、tomcat 中 http application/json 请求体的大小