解析Jackson / Jerkson(Scala)中的子类时找不到合适的构造函数?

时间:2012-11-01 05:33:23

标签: java scala jackson

我正在尝试解析一个类,由于某种原因,Jackson(实际上是Scala中的Jerkson接口)正在进行转储。我猜这可能与BoardOpen作为MessageEvent类的子类有关:

class BoardOpen(

  override val channel: String

) extends MessageEvent(channel)

class MessageEvent( val channel: String = "/" )

完整错误:

The error com.codahale.jerkson.ParsingException: No suitable constructor found
for type [simple type, class engine.event.BoardOpen]: can not instantiate from J
SON object (need to add/enable type information?)
 at [Source: java.io.StringReader@4004c5b3; line: 1, column: 2]
        at com.codahale.jerkson.ParsingException$.apply(ParsingException.scala:17)
        at com.codahale.jerkson.Parser$class.parse(Parser.scala:86)
        at com.codahale.jerkson.Json$.parse(Json.scala:6)
        at com.codahale.jerkson.Parser$class.parse(Parser.scala:14)
        at com.codahale.jerkson.Json$.parse(Json.scala:6)
        at controllers.socket.MessageParser$.matchMsg(MessageParser.scala:59)
        at controllers.socket.MessageParser$.parseRawMessage(MessageParser.scala:90)
        at controllers.socket.MessageParser$.readStringMsg(MessageParser.scala:42)

以下是我解析数据时发生的事情:

msgCase match {
       case "BoardOpen"            => parse[BoardOpen](msgData)

和JSON看起来像:

{"channel":"/board"}

任何想法失败的原因?感谢。

更新

因为只有channel属性需要担心,我想我会看到如果我将解析更改为parse[MessageEvent](msgData)会发生什么,奇怪的是它会吐出同样的错误:

The error com.codahale.jerkson.ParsingException: No suitable constructor found
for type [simple type, class com.alloyengine.powder.MessageEvent]: can not insta
ntiate from JSON object (need to add/enable type information?)
 at [Source: java.io.StringReader@34fd2520; line: 1, column: 2]

0 个答案:

没有答案