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

将贴图转换为Scala对象

东方建修
2023-03-14

参考[Stackoverflow]Scala:将map转换为case类我尝试复制其中一个响应,我看到以下错误:

<代码>无法构造com的实例。实践斯卡拉。Test“(不存在任何创建者,如默认构造):无法从[源:未知;行:-1,列:-1]处的对象值(无委托或基于属性的创建者)反序列化

代码:

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.ScalaObjectMapper

case class Test(k1: Int, k2: String, k3: String)

object Workspace {
  def fromMap[T](map: Map[String, Any])(implicit m: Manifest[T]): T = {
    val mapper = new ObjectMapper() with ScalaObjectMapper
    mapper.convertValue(map)
  }

  def main(args: Array[String]): Unit = {
    val myMap = Map("k1" -> 1, "k2" -> "val2", "k3" -> "val3")
    val result = fromMap[Test](myMap)
    println(result)
  }
}

这个错误说明了什么?我错过了什么吗?

共有1个答案

乐正心水
2023-03-14

您需要在映射器上注册DefaultScalaModule:

// With 2.10 and later
val mapper = JsonMapper.builder()
  .addModule(DefaultScalaModule)
  .build()

// versions before 2.10 (also support for later 2.x but not 3.0)
val mapper = new ObjectMapper()
mapper.registerModule(DefaultScalaModule)

来源:https://github.com/FasterXML/jackson-module-scala#usage

 类似资料:
  • 有没有更好的方法来转换贴图

  • 我有一个带有对象的数组()。对象包含一个 orgId 和一个 orgName。 有没有一种简便的方法可以将它转换成< code>Map[Long,String] (orgId,orgName)

  • 假设我有以下地图: 我想根据以上内容获得。我目前的解决方案似乎太长太可怕了。 一定有更好的办法,不是吗?

  • 我在Firebase中有以下数据: 在Flutter中,我有以下两个对象: 我正在尝试将Firebase中的集合嵌套贴图转换为Flatter中的列表,但遇到了问题。在Flatter中将具有贴图字段的贴图对象转换为列表的最佳方法是什么? 我知道我在处理map对象时遇到了问题,根据我的方法,我收到了不同的错误,但通常类似于以下情况之一: 错误1:“键入“\u InternalLinkedHashMap

  • 在我的项目中,我有一个Akka层,它返回一个,接收Future的部分是Java风格。 团队中的人不了解Scala,他们宁愿使用,因为他们更了解Java 8 API。 有没有什么好方法可以将一个转换成一个?。 显然是以非阻塞的方式。 当做

  • 问题内容: 我目前正在开发一个Scala应用程序,该应用程序利用Spring-Boot和Swagger发送和接收REST调用。 Swagger和Spring-Boot是纯Java项目,与Scala的兼容性有限,但是我似乎找到了解决该问题的方法。 由于Spring- Boot和Swagger将请求作为Java对象处理(需要使用setter和getter才能工作),因此我必须将请求视为Java对象,然