小编rak*_*esh的帖子

在JSON响应中为字段选择数据类型

我正在研究一个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)

java json pojo jackson jackson-databind

6
推荐指数
1
解决办法
79
查看次数

在一定时间内执行Java程序

我有一个要求,我需要在工作日的上午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)

您能提出更好的建议吗?

java jodatime

0
推荐指数
1
解决办法
55
查看次数

标签 统计

java ×2

jackson ×1

jackson-databind ×1

jodatime ×1

json ×1

pojo ×1