gpt4 book ai didi

java - sql 映射到 json 对象

转载 作者:行者123 更新时间:2023-12-01 17:34:37 24 4
gpt4 key购买 nike

我正在寻找一种更好的方法将查询映射到 json 对象。

json对象的结构是 -

{
"year":"2020",
"month":[
{
"name":"January",
"month":"1",
"payroll_dates":[
"1",
"2"
],
"holiday_dates":[
"3",
"4"
]
},
{
"name":"Feburary",
"month":"2",
"payroll_dates":[
"1",
"2"
],
"holiday_dates":[
"3",
"4"
]
},
{
"name":"March",
"month":"3",
"payroll_dates":[
"1",
"2"
],
"holiday_dates":[
"3",
"4"
]
},
{
"name":"April",
"month":"4",
"payroll_dates":[
"1",
"2"
],
"holiday_dates":[
"3",
"4"
]
},
{
"name":"May",
"month":"5",
"payroll_dates":[
"1",
"2"
],
"holiday_dates":[
"3",
"4"
]
}
]
}

数据库设计是:

   id | calendarDt | year | month | day | calendarType
1. | 2020-1-25 | 2020 | 1 | 25 | Holiday
2 | 2020-1-22 | 2020 | 1 | 22 | Holiday
3 | 2020-1-13 | 2020 | 1 | 13 | Payday

这些是一月假期和发薪日的详细信息。

我使用的java代码是:

为每个月的假期创建了一个列表。为每个月的工资单创建了一个列表。为每个月创建一个对象。然后在月份对象中设置列表。

有没有更好的方法在java中做到这一点?

    List<String> payrollStringJan= new ArrayList<String>();
List<String> holidayStringJan = new ArrayList<String>();
Month janMonth = new Month();

for (Calendar item: payrollCalendarList) {

switch(item.getMonth()) {

case 1:
populateMonthObject(item, payrollStringJan,
holidayStringJan);
break;

}

private void populateMonthObject(UhgCalendar item,
List<String> payrollString, List<String> holidayString) {
if("Payday".equals(item.getCalendarType())) {
payrollString.add(Integer.toString(item.getDay()));
}
if("Holiday".equals(item.getCalendarType())) {
holidayString.add(Integer.toString(item.getDay()));
}
}

Json pojo -

       public class PayrollCalendar {

@JsonProperty("year")
private String year;
@JsonProperty("month")
private List<Month> month = null;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
//getter setter follow
}

public class Month {

@JsonProperty("name")
private String name;
@JsonProperty("month")
private String month;
@JsonProperty("payroll_dates")
private List<String> payrollDates = null;
@JsonProperty("holiday_dates")
private List<String> holidayDates = null;
//getter setter follow
}
}

最佳答案

首先我想明白数据库为什么要这样设计。数据库可以只有日历日期和日历类型。如果您想要给定月份或几个月或一年内的假期/发薪日,您可以轻松编写查询。

就 Json 对象而言,如果客户端想要所有日期,它可以简单地有一个发薪日数组和一个假期数组,并且我认为响应对于此用例来说不会太大。

关于java - sql 映射到 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61061915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com