I have a common problem, but I still can’t plunge into what I read.
In the scalatra application, I get the following json:
{ _type: "hello", timestamp: 123, data: [ {table: "stuffJ",_id: 24}, {table: "preferences",_id: 34,word: "john"} ]}
with an unknown number of elements in field data. The field table will always be there to distinguish between types of classes. I am trying to figure it out with the RestAPIMessage class. This is what I have so far:
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"}]}"""
Thank you for your help!
source share