JSON Slurper偏移量

JSON Slurper偏移量,json,groovy,Json,Groovy,我有一个很大的JSON文件,我正试图用JSON Slurper解析它。JSON文件包含关于bug的信息,因此它包含问题键、描述和注释等内容。不过,并非每一期都有评论。例如,以下是JSON输入的示例: { "projects": [ { "name": "Test Project", "key": "TEST", "issues": [ { "key": "BUG-1", "priorit

我有一个很大的JSON文件,我正试图用JSON Slurper解析它。JSON文件包含关于bug的信息,因此它包含问题键、描述和注释等内容。不过,并非每一期都有评论。例如,以下是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解析创建问题对象的方法。当每个问题都至少有一条评论时,一切都很好,但是,一旦出现一个没有评论的问题,其余的问题就会得到错误的评论。我目前正在根据问题总数循环浏览JSON文件,然后根据我得到的问题数量查找注释。那么比如说,

parsedData.issues.comments.body[0][0][0]
返回“注释1”。但是,

parsedData.issues.comments.body[0][1][0]
返回“注释3”,这是不正确的。有没有办法让我知道某个问题是否有任何评论?我不想编辑JSON文件来添加空的注释字段,但这会有帮助吗?

您可以这样做:

parsedData.issues.comments.collect { it?.body ?: [] }
因此,它检查
主体
,如果不存在,则返回一个空列表

更新
根据问题的更新,您可以执行以下操作:

parsedData.projects.collectMany { it.issues.comments.collect { it?.body ?: [] } }

谢谢但其中的索引信息在哪里呢?我们怎么知道它在看哪个问题?不知道你的意思。。。第一个列表将包含第一个注释,第二个包含第二个注释,etcI现在明白你的意思了。不过我得到了一个NullPointerException。上面写着“无法获取null对象上的属性‘comments’”。你能给出一个给出错误的json的简单有效匿名示例吗?当然,我编辑了上面的示例,因此它现在是我的精确测试json文本。