java - sql映射到json对象
问题描述
我正在寻找一种将查询映射到 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 对象而言,如果客户想要所有日期,它可以简单地有一个发薪日数组和一个假期数组,我认为对于这个用例来说响应不会太大。
推荐阅读
- r - 从 R 中的黄土回归结果中提取残差标准误差
- android - 实现自定义操作栏时出现 NullPointerException
- mongodb - 从现有的 MongoDB 集合生成 JSON 模式
- azure-cosmosdb - 如何使用 azure cosmos DB 中的查询检查子节点是否为空
- python-3.x - python烧瓶测试站点在IIS服务器上不起作用,但是它在本地主机上工作
- c# - 将 DataTable 转换为 JSON - 如果一个为空,则过滤掉所有子级
- regex - regexp_match 不适用于谷歌数据工作室中带有特殊字符的文本字符串
- python - 如何获得每组连续相同单词超过 X 次的平均值?
- python - 在 Python 中,如何使用日期时间作为条件进行合并(不准确,但有一些时间差异)
- c# - 具有太多包含异常的 Linq 查询