Java Jackson序列化从列表中排除对象
下面的JSON有一些父子关系(示例数据)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": [
- “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),我知道您的意思,但由于您在执行序列化时无法真正进行筛选,因此您必须在对象序列化后进行筛选。