无法在 Scala 中使用 jackson fastxml 将 json 数组反序列化为类对象

mRh*_*s13 1 java serialization json scala

我正在尝试将类对象序列化为 json 并将 json 反序列化为在 Scala 中使用 jackson fast xml 的类对象。这是我的代码。

var jsonDataString = objectMapper.writeValueAsString(nodeRepoList)
var deserializedData: List[NodeRepository] = objectMapper.readValue(jsonDataString, classOf[List[NodeRepository]]);
Run Code Online (Sandbox Code Playgroud)

json 如下所示。

[ {
  "Operation" : "sample",
  "Value" : "cool",
  "TargetColumn" : "10",
  "ClassName" : "RowFilter",
  "DiagramId" : "2",
  "NodeId" : "1"
}, {
  "columnToInclude" : "sample",
  "ClassName" : "ColumnFilter",
  "DiagramId" : "2",
  "NodeId" : "1"
} ]
Run Code Online (Sandbox Code Playgroud)

反序列化为类对象时,输出如下。输出在 Map 中。它不应该在 Map 类型中。它应该被反序列化为类对象。

[Map(NodeId -> 1, ClassName -> RowFilter, TargetColumn -> 10, Value -> cool, Operation -> sample, DiagramId -> 2)] 
Run Code Online (Sandbox Code Playgroud)

请让我知道如何解决这个问题。

小智 8

我最近有同样的问题。从列表更改为数组解决了我的问题。代替

classOf[List[NodeRepository]]
Run Code Online (Sandbox Code Playgroud)

尝试使用

classOf[Array[NodeRepository]]
Run Code Online (Sandbox Code Playgroud)

您的结果将是一个数组而不是一个列表,但对象将被反序列化为NodeRepository而不是 Map。在 Scala 中将 Array 转换为 List 也非常简单(例如toList方法)