我有一个很大的JSON文件,我试图用JSON Slurper解析。 JSON文件包含有关错误的信息,因此它包含问题密钥,描述和注释等内容。不是每个问题都有评论。例如,以下是JSON输入的示例:
{
"projects": [
{
"name": "Test Project",
"key": "TEST",
"issues": [
{
"key": "BUG-1",
"priority": "Major",
"comments": [
{
"author": "a1",
"created": "d1",
"body": "comment 1"
},
{
"author": "a2",
"created": "d2",
"body": "comment 2"
}
]
},
{
"key": "BUG-2",
"priority": "Major"
},
{
"key": "BUG-3",
"priority": "Major",
"comments": [
{
"author": "a3",
"created": "d3",
"body": "comment 3"
}
]
}
]
}
]
}
我有一个基于JSON解析创建Issue对象的方法。当每个问题至少有一个评论时,一切都很顺利,但是,一旦出现没有评论的问题,其他问题就会得到错误的评论。我目前正在根据问题总数循环遍历JSON文件,然后根据我所获得的问题数量来查找评论。所以,例如,
parsedData.issues.comments.body[0][0][0]
返回"评论1"。然而,
parsedData.issues.comments.body[0][1][0]
返回"评论3",这是不正确的。有什么方法可以看出特定问题是否有任何意见?我宁愿不必编辑JSON文件来添加空注释字段,但这会有帮助吗?
答案 0 :(得分:2)
你可以这样做:
parsedData.issues.comments.collect { it?.body ?: [] }
因此它检查body
,如果不存在,则返回空列表
<强>更新强>
根据问题的更新,您可以:
parsedData.projects.collectMany { it.issues.comments.collect { it?.body ?: [] } }