我正在研究一个Java项目,该项目使用Jackson库解析从外部API接收到的JSON响应。响应中的字段之一有时作为单个对象出现,在某些情况下,它作为对象数组出现。因此,我不确定应该选择哪种数据类型将此响应映射回Java对象。如何将两种响应类型正确映射到Java对象?
在上述可能的重复项中,响应始终是一个列表,但在我看来,它不是。所以我不认为它是上述问题的重复。
以下是我收到的回复:
"configuration": {
"additionalServices": {
"type": "Standard DDOS IP Protection"
},
}
Run Code Online (Sandbox Code Playgroud)
有时这就是我收到相同回复的方式:
"configuration": {
"additionalServices": [
{
"type": "Standard DDOS IP Protection"
},
{
"type": "Remote Management"
}
],
}
Run Code Online (Sandbox Code Playgroud)
这是我的Java映射现在的样子:
"configuration": {
"additionalServices": {
"type": "Standard DDOS IP Protection"
},
}
Run Code Online (Sandbox Code Playgroud)
"configuration": {
"additionalServices": [
{
"type": "Standard DDOS IP Protection"
},
{
"type": "Remote Management"
}
],
}
Run Code Online (Sandbox Code Playgroud)
如果我使用以下声明,则它将仅解析数组输出,并为第一个响应抛出异常:
@JsonIgrnoreProperties(ignoreUnknown = true)
public class Configuration {
private List<AdditionalServices> additionalServices;
}
Run Code Online (Sandbox Code Playgroud)
如果我使用以下声明,则它将仅解析第一个响应,并为第二个响应引发异常:
@JsonIgrnoreProperties(ignoreUnknown = true)
public …Run Code Online (Sandbox Code Playgroud) 我有一个要求,我需要在工作日的上午9点到下午5点之间运行Java程序。时区将始终为UTC。该程序应从上午9点开始,并应在下午5点之前结束。如果无法在下午5点之前完成,则应睡到第二天08:59:59。如果第二天是周末,那么应该从星期一开始。
使用Joda时间的两个日期之间以秒为单位的文章差异?解释了如何获取两个预定义日期之间的秒差,但是我一直想计算下一个工作日上午9点与当前时间之间的差。
我正在考虑通过计算两个日期之间的时间差来使用Thread.sleep()。是否有一个Joda Time API,可以用来计算两个日期之间的时差?
我已经尝试获取当前工作日和第二天上午9点(如果它是工作日),计算这两个纪元之间的差,并将该值用于Thread.sleep,但这有点混乱。
以下是我使用的伪代码
getNextDayEpoch函数包含if / else代码,使用确定日期是工作日/周末java来确定是工作日还是周末
根据是工作日还是周末,我得到相应的纪元值。
currentEpoch = getCurrentEpoch()
nextDayEpoch = getNextDayEpoch()
difference = nextDayEpoch - currentDayEpoch
try {
Thread.sleep(difference);
} catch (InterruptedException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
您能提出更好的建议吗?