Jackson objectMapper为相同的json提供不同的对象



我正在传递一个json到objectmapper。JSON字符串看起来像这样:

{          
"id": "ID1",
"identifier" : "XYZ",
"data": [
{
"id": "sampleParentID",
"childrenElements": [
{
"id" : "sampleChildID",
"content" : "sample child content",  
}
]
}
]
}
val objectMapper = ObjectMapper().registerModule(KotlinModule())
val obj: Object1 = objectMapper.readValue(jsonString)

我的类看起来像这样:

data class Object 1 (
var id : String? = null,
var identifier : String? = null,
var data: MutableList<Element>? = null,
){
// some functions
}
class Element (
var id : String?= null
var content : String? = null
var children: List<Element>? = listOf(),
) {
// som functions
}

From obj, data字段是嵌套的,它本身就是一个对象。我想要得到hashCodedata所以是obj.data.hashCode()。假设生成了12345。

我将其存储在数据库中。现在,假设用户发送了另一个具有完全相同JSON的请求,JSON再次被转换为一个对象,我从中提取数据字段,现在当我执行obj.data.hashCode()时,没有生成12345,而是生成了一些其他数字。

这个行为是预期的吗?如果是,解决方法是什么?

:增加了类的描述。

鉴于您的Element类不是数据类(在这种情况下,您将获得基于所有类属性的hashCode()方法实现),您将需要自己编写hashCode()方法,以便不使用默认的(基于对象内存引用),并且您摆脱了当前面临的行为。

最新更新