【发布时间】:2020-05-26 19:25:48
【问题描述】:
我对 Java 知之甚少,但对 groovy 知之甚少。通过使用我的一些常规知识并使用 groupBy 集合操作results.groupBy({ plan -> plan.planItem.self }) 达到以下结果,我得到了以下结果。
我想比较并获取以TEST-2 结尾的planItem.self URL 的最早startDate 和最新endDate。你可以看到TEST-2 有两个不同的startDate 和endDate 条目。我想要的最后一个对象是只有一个 TEST-2 条目,但日期如上所述,并删除除一个之外的所有对象。对于所有页面类似,例如AP-3、AP-1。
我有一个如下所示的集合对象(您可能会注意到TEST-2 和AP-3 有多个对象)。
{
"https://dev.example.com/pages/TEST-2": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-17",
"planItem": {
"self": "https://dev.example.com/pages/TEST-2",
"type": "ISSUE"
},
},
{
"startDate": "2020-05-17",
"endDate": "2020-05-20",
"planItem": {
"self": "https://dev.example.com/pages/TEST-2",
"type": "ISSUE"
}
}
],
"https://dev.example.com/pages/AP-3": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-17",
"planItem": {
"self": "https://dev.example.com/pages/AP-3",
"type": "ISSUE"
}
},
{
"startDate": "2020-05-27",
"endDate": "2020-05-27",
"planItem": {
"self": "https://dev.example.com/pages/AP-3",
"type": "ISSUE"
}
}
],
"https://dev.example.com/pages/AP-1": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-17",
"planItem": {
"self": "https://dev.example.com/pages/AP-1",
"type": "ISSUE"
}
}
],
"https://dev.example.com/pages/AP-4": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-18",
"planItem": {
"self": "https://dev.example.com/pages/AP-4",
"type": "ISSUE"
}
}
]
}
我想要制作的输出对象如下所示(您可能会注意到,在输出集合中,TEST-2 和AP-3 只有一个对象)并且还删除了不必要的属性。请指导我使用最好的 Groovy 操作来加快整个过程,因为我只有 60 秒的时间来运行这些操作以及 REST 调用,一旦我以我想要的格式准备好这些对象,我就会进行这些调用,所以处理时间非常重要。
{
"https://dev.example.com/pages/TEST-2": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-20"
}
],
"https://dev.example.com/pages/AP-3": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-27"
}
],
"https://dev.example.com/pages/AP-1": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-17"
}
],
"https://dev.example.com/pages/AP-4": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-18"
}
]
}
日期应该从字符串转换为日期。
【问题讨论】:
标签: json parsing data-structures groovy collections