2015-06-30 4 views
0

Я использую jackson для десериализации Json в Scala.Scala Jackson Deserialize to String или Map

Я пытаюсь десериализовать поле json, которое может быть либо строкой, либо объектом класса, который я определил. Например:

{ 
    fieldName: "something" 
    /*** OR ****/ 
    fieldName: Object of case class Sample(..........) 
} 

Как я справляюсь с таким случаем, и пусть Json автоматически десериализациями в строку или объект класса случае выше в зависимости от величины входного сигнала.

+0

Самый простой способ использовать Джексон в Scala, вероятно, использовать [json4s] (https://github.com/json4s/json4s) или, может быть, [Восхищение -json] (https://github.com/propensive/rapture-json). –

ответ

0

Одним из путей вокруг:

case class A(fieldName:String) 
case class B(fieldName:Sample) //your Sample is param 

val tryResult = Try { 
    JsonMethods.parse(json).extract[A] 
    }.recover { case _ => JsonMethods.parse(json).extract[B] } 

    println(tryResult.get) // can throw exception 
Смежные вопросы