Guest User

Untitled

a guest
Oct 21st, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. import net.liftweb.json._
  2.  
  3. //implicit val formats = net.liftweb.json.DefaultFormats
  4.  
  5. trait InternalCaseClassTrait{
  6. def text: String
  7. }
  8. case class InternalCaseClass(
  9. text: String
  10. ) extends InternalCaseClassTrait
  11.  
  12.  
  13. case class InternalCaseClass2(
  14. text: String
  15. ) extends InternalCaseClassTrait
  16.  
  17.  
  18. case class OutBoundCaseClass(
  19. cbsToken: String,
  20. aTrait: InternalCaseClassTrait,
  21. backendMessages: List[InternalCaseClass],
  22. owners: List[String]
  23. )
  24.  
  25.  
  26. case class InBoundCaseClass(
  27. oneMore: Option[String],
  28. aTrait: InternalCaseClassTrait,
  29. cbsToken: Option[String],
  30. backendMessages: List[InternalCaseClass],
  31. owners: List[String]
  32. )
  33.  
  34.  
  35. var oneCaseClass: OutBoundCaseClass = OutBoundCaseClass("cbsToken",InternalCaseClass("trait"), List(InternalCaseClass("text")), List(""))
  36. val twoCaseClass: InternalCaseClass = InternalCaseClass("text")
  37.  
  38.  
  39. implicit val formats = Serialization.formats(ShortTypeHints(List(classOf[InternalCaseClass],classOf[InternalCaseClass2])))
  40.  
  41. //1case class -->JValue
  42. val classToJValue: JValue = Extraction.decompose(oneCaseClass)
  43.  
  44. //2 JValue -->String
  45. //2.1 JValue -->Document first.
  46. val jValueToDocument: Document = render(classToJValue)
  47. //2.2 Document-->String
  48. val documnetToStringCompact: String = compact(jValueToDocument)
  49. val documnetToStringPretty: String = pretty(jValueToDocument)
  50.  
  51. //2.1 and 2.2 one way:
  52. val jValueToStringCompact: String = compactRender(classToJValue)
  53.  
  54.  
  55.  
  56.  
  57. //3.0 String --> JValue
  58. val stringToJValue: JValue = parse(jValueToStringCompact)
  59.  
  60. //4.0 JValue --> Case Class
  61. val jvalueToCaseClass: InBoundCaseClass = Extraction.extract[InBoundCaseClass](stringToJValue)
  62. //val jvalueToCaseClass2: InBoundCaseClass = Extraction.extract[InBoundCaseClass](parse("{\n \"1\":\"2\"\n}"))
Add Comment
Please, Sign In to add comment