Java Jackson序列化从列表中排除对象

Java Jackson序列化从列表中排除对象,java,json,spring,jackson,fasterxml,Java,Json,Spring,Jackson,Fasterxml,下面的JSON有一些父子关系(示例数据) “id”:1050是子项,因为它有“parentId”:1051 “id”:1051是父项,因为它具有“parentId”:null 像这样,我有大量的数据 { "statusCode": 200, "statusMessage": "Success", "dataCount": 0, "data": null, "dataList": [

下面的JSON有一些父子关系(示例数据)

  • “id”:1050是子项,因为它有“parentId”:1051
  • “id”:1051是父项,因为它具有“parentId”:null
像这样,我有大量的数据

      {
        "statusCode": 200,
        "statusMessage": "Success",
        "dataCount": 0,
        "data": null,
        "dataList": [
          {
            "id": 1050,
            "parentId": 1051,
            "questionInfo": {
              "id": 1050,
              "description": "--",
              "question": "--",
              "answersInfo": [
                {
                  "id": 2041,
                  "description": "--",
                  "isCorrect": "--",
                  "name": "--",
                  "subQuestions": []
                },
                {
                  "id": 2040,
                  "description": "--",
                  "isCorrect": "--",
                  "name": "--",
                  "subQuestions": []
                }
              ]
            }
          },
          {
            "id": 1051,
            "parentId": null,
            "questionInfo": {
              "id": 1051,
              "description": "--",
              "question": "--",
              "answersInfo": [
                {
                  "id": 2024,
                  "description": "--",
                  "isCorrect": "--",
                  "name": "--",
                  "subQuestions": []
                },
                {
                  "id": 2023,
                  "description": "--",
                  "isCorrect": "--",
                  "name": "--",
                  "subQuestions": [
                    {
                      "id": 1050,
                      "parentId": 1051,
                      "questionInfo": {
                        "id": 1050,
                        "description": "--",
                        "question": "--",
                        "answersInfo": [
                          {
                            "id": 2041,
                            "description": "--",
                            "isCorrect": "--",
                            "name": "--",
                            "subQuestions": []
                          },
                          {
                            "id": 2040,
                            "description": "--",
                            "isCorrect": "--",
                            "name": "--",
                            "subQuestions": []
                          }
                        ]
                      }
                    }
                  ]
                }
              ]
            }
          },
          {
            "-------": "-------"
          }
        ],
        "dataMap": null
      }
我的要求是需要从父位置删除子记录,其中parentId有一些值(“parentId”:1051),因为这些子信息来自父子信息,这些记录不是父记录

      {
        "statusCode": 200,
        "statusMessage": "Success",
        "dataCount": 0,
        "data": null,
        "dataList": [
          {
            "id": 1051,
            "parentId": null,
            "questionInfo": {
              "id": 1051,
              "description": "--",
              "question": "--",
              "answersInfo": [
                {
                  "id": 2024,
                  "description": "--",
                  "isCorrect": "--",
                  "name": "--",
                  "subQuestions": []
                },
                {
                  "id": 2023,
                  "description": "--",
                  "isCorrect": "--",
                  "name": "--",
                  "subQuestions": [
                    {
                      "id": 1050,
                      "parentId": 1051,
                      "questionInfo": {
                        "id": 1050,
                        "description": "--",
                        "question": "--",
                        "answersInfo": [
                          {
                            "id": 2041,
                            "description": "--",
                            "isCorrect": "--",
                            "name": "--",
                            "subQuestions": []
                          },
                          {
                            "id": 2040,
                            "description": "--",
                            "isCorrect": "--",
                            "name": "--",
                            "subQuestions": []
                          }
                        ]
                      }
                    }
                  ]
                }
              ]
            }
          },
          {
            "-------": "-------"
          }
        ],
        "dataMap": null
      }
Iam使用SpringMVC+Hibernate标准API+Jackson库
所以,有谁能告诉我在序列化时从列表中排除对象(基于某些条件的完整对象)的最佳方法吗???

正如我们与@Developer讨论的那样,解决这个问题的最佳方法是使用某种工具序列化所有对象,就像
Jackson
中的
ObjectMapper
一样,一旦建立了列表,就对其进行迭代,只保留您想要保留的元素


就性能而言,这不是最好的选择,但这将确保您不会错过任何想要的项目

问题是,在序列化对象时,要么执行整个JSON数组,要么不执行任何操作。因此,不幸的是,最好的方法是序列化所有列表,然后删除不需要的项。@DamCx,你的意思是需要一个接一个地迭代所有记录吗?通过使用Jacksonies的
ObjectMapper
,你可以在一次操作中序列化所有对象。我可以序列化,假设我大约有100条记录,100条记录中有30条是父记录。因此,我需要从列表中排除剩余的70个子记录(具有父id),我知道您的意思,但由于您在执行序列化时无法真正进行筛选,因此您必须在对象序列化后进行筛选。