【发布时间】:2015-10-29 11:35:39
【问题描述】:
我有一个常见问题,但仍然无法理解我正在阅读的内容。
在一个 scalatra 应用程序中,我收到以下 json:
{
_type: "hello",
timestamp: 123,
data: [
{table: "stuffJ",_id: 24},
{table: "preferences",_id: 34,word: "john"}
]}
字段“数据”中的元素数量未知。字段表将始终存在以区分类类型。我正在尝试将其解析为 RestAPIMessage 类。这是我目前所拥有的:
implicit val jsonFormats = new DefaultFormats { outer =>
override val typeHintFieldName = "table"
override val typeHints = ShortTypeHints(List(classOf[Preferences], classOf[StuffJ]))
}
sealed trait DataJson
case class Preferences(table: String, _id: Long, word : String) extends DataJson
case class StuffJ(table: String, _id: Long) extends DataJson
case class RestAPIMessage(_type: String, timestamp: Long, data: List[DataJson])
// if sent as Json, returns a json with two "table" fields
val message = new RestAPIMessage("hello", 123, List(new StuffJ("StuffJ", 24), new Preferences("preferences", 34, "john")))
// if received as Json, fails with a "no usable value for outer"
val djson = """{"_type":"hello","timestamp":123,"data":[{"table":"StuffJ","_id":24},{"table":"table":"preferences","_id":34,"word":"john"}]}"""
感谢您的帮助!
【问题讨论】:
标签: scala json-deserialization json4s