Json 使用jackson的Scala ListMap反序列化
我正在尝试使用Jackson序列化然后反序列化Scala不可变列表映射 我定义Json 使用jackson的Scala ListMap反序列化,json,scala,serialization,jackson,Json,Scala,Serialization,Jackson,我正在尝试使用Jackson序列化然后反序列化Scala不可变列表映射 我定义val foo:ListMap[String,String]=ListMap(“foo1”->“bar1”,“foo2”->“bar2”),然后使用jackson对其进行序列化。我验证了序列化字符串,它看起来很好。然后,当我尝试使用Jackson反序列化字符串时,我得到以下错误: java.lang.ClassCastException: scala.collection.immutable.Map$Map1 cann
val foo:ListMap[String,String]=ListMap(“foo1”->“bar1”,“foo2”->“bar2”)
,然后使用jackson对其进行序列化。我验证了序列化字符串,它看起来很好。然后,当我尝试使用Jackson反序列化字符串时,我得到以下错误:
java.lang.ClassCastException: scala.collection.immutable.Map$Map1 cannot be cast to scala.collection.immutable.ListMap
at .<init>(<console>:12)
at .<clinit>(<console>)
at .<init>(<console>:7)
at .<clinit>(<console>)
at $print(<console>)
java.lang.ClassCastException:scala.collection.immutable.Map$Map1不能强制转换为scala.collection.immutable.ListMap
在。(:12)
在
在。(:7)
在
$print()
知道如何有效地序列化/反序列化ListMaps吗?代码
序列化ListMap的代码是
val mapper = new ObjectMapper
mapper.registerModule(DefaultScalaModule)
val m = ListMap((5, 1), (2, 33), (7, 22), (8, 333))
mapper.writeValueAsString(m)
反序列化是
val str = """{"5":1,"2":33,"7":22,"8":333}"""
val listMap:ListMap = objectMapper.readValue[ListMap](str)
使用与序列化示例中相同的映射器初始化
输出
用于序列化
{"5":1,"2":33,"7":22,"8":333}
Map(5 -> 1, 2 -> 33, 7 -> 22, 8 -> 333)
用于反序列化
{"5":1,"2":33,"7":22,"8":333}
Map(5 -> 1, 2 -> 33, 7 -> 22, 8 -> 333)
代码
序列化ListMap的代码是
val mapper = new ObjectMapper
mapper.registerModule(DefaultScalaModule)
val m = ListMap((5, 1), (2, 33), (7, 22), (8, 333))
mapper.writeValueAsString(m)
反序列化是
val str = """{"5":1,"2":33,"7":22,"8":333}"""
val listMap:ListMap = objectMapper.readValue[ListMap](str)
使用与序列化示例中相同的映射器初始化
输出
用于序列化
{"5":1,"2":33,"7":22,"8":333}
Map(5 -> 1, 2 -> 33, 7 -> 22, 8 -> 333)
用于反序列化
{"5":1,"2":33,"7":22,"8":333}
Map(5 -> 1, 2 -> 33, 7 -> 22, 8 -> 333)