当前位置: 首页 > 知识库问答 >
问题:

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

甘明朗
2023-03-14

我将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
}

这种行为是意料之中的吗?如果是,有什么解决办法?

更新:添加了类描述。

共有1个答案

茅才
2023-03-14

假定Element类不是数据类(在本例中,您将基于所有类属性获得hashcode()方法实现),您将需要自己编写hashcode()方法,以便不使用默认的方法(基于对象内存引用),并且消除当前面临的行为。

 类似资料:
  • 我正在W3School页面中尝试一个简单的案例查询。 http://www.w3schools.com/sql/trysql.asp?filename=trysql_select_groupby_2 当我运行下面的查询时,我总是为所有的范围值“over”。如果价格低于500,则应显示“under”。

  • 我在xml文件中使用了约束布局。我有一个类似例子中的视图。Imageview和textview。我希望这两个在点击后有相同的动作。怎么才能把两者组合在一起,给他们一个id? xml:

  • 我正在微服务中做一些更改,它有一个像以下这样的对象: } 我将从Json中获取我将要使用的信息。Json有一个名为的键,我想在两个不同的变量中使用这个速率,一个int-rate和一个Float-ratePPR。这里的问题是,我知道在同一个对象中不能有来自同一个Json的两个变量,但我有义务这样做,因为我不能触摸变量,所以我创建了变量,以便在需要时使用。 当我进行测试时,会出现以下错误: 属性“ra

  • 问题内容: 在以下代码中,我不明白为什么当它属于两个不同的对象时具有相同的ID? 问题答案: 我认为这是正在发生的事情: 取消引用时,将在内存中创建其副本。该存储位置由以下位置返回 由于没有引用到刚刚创建的方法的副本,因此GC将其回收,并且该内存地址再次可用 取消引用时,将在相同的内存地址(可用)中创建它的副本,您可以再次使用该地址。 第二个副本是GCd 如果您要运行一堆其他代码并再次检查实例方法

  • 问题内容: 我是新手,并尝试构建这样的示例以了解其工作原理。 有我的示例代码: 如您在我注入的样本中所见 我也想使用提供值作为此方法的参数。 最终我得到了这样的错误 我究竟做错了什么? 我应该如何以正确的方式提供此参数以避免此类错误? 问题答案: 您需要使用 限定符注释 并在注入依赖时使用此限定符 希望能帮助到你!另请查看官方文档-http: //google.github.io/dagger/

  • 现在,我有下面的代码,它只是测试标准库中的< code>std::set_difference: 当我用Clang/GCC编译它时,我得到了输出: 更新我想实际使用的源代码案例(假设是我将要做的一些操作。因此,这些操作将按的顺序发生): 好吧,这看起来不错,它实际上对应于标准::set_difference,检查链接:但是当我选择MSVC时,我得到了不同的输出(检查链接:https://godbo