Guest User

Untitled

a guest
Oct 20th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. import java.lang.reflect.Type
  2. import java.util
  3.  
  4. import com.google.gson._
  5.  
  6. /**
  7. * Cannot get scala list to work nicely so resorted to Java List for the time being
  8. */
  9. object SimpleExample extends App {
  10.  
  11. lazy val gson: Gson = new GsonBuilder()
  12. .registerTypeHierarchyAdapter(classOf[Seq[Any]], new ListSerializer)
  13. .setPrettyPrinting()
  14. .create()
  15.  
  16. class ListSerializer extends JsonSerializer[Seq[Any]] {//with JsonDeserializer[Seq[Any]] {
  17. override def serialize(src: Seq[Any], typeOfSrc: Type, context: JsonSerializationContext): JsonElement = {
  18. import scala.collection.JavaConverters._
  19. context.serialize(src.toList.asJava)
  20. }
  21.  
  22. // override def deserialize(json: JsonElement, typeOfT: Type, context: JsonDeserializationContext): Seq[Any] = {
  23. // if (json.isJsonArray) {
  24. // val array: JsonArray = json.getAsJsonArray
  25. // (for (i <- 0 until array.size()) yield context.deserialize(array.get(i).getAsJsonObject, typeOfT)).toList
  26. // } else {
  27. // context.deserialize(json.getAsJsonObject, typeOfT)
  28. // }
  29. // }
  30. }
  31.  
  32. case class User(name: String, age: Int, friends: util.List[User])
  33.  
  34. val friends : util.List[User] = new util.ArrayList
  35. friends.add(User("Dan", 5, new util.ArrayList))
  36. friends.add(User("Janis", 7, new util.ArrayList))
  37.  
  38. val user: User = User("Jane", 12, friends)
  39. // val user: User = User("Jane", 12, List(User("Dan", 5, Nil), ArrayList("Janis", 7, Nil)))
  40.  
  41. println(gson.toJson(user))
  42.  
  43. println(gson.fromJson(
  44. """
  45. |{
  46. | "name": "john",
  47. | "age": 55,
  48. | "friends": [
  49. | {
  50. | "name": "Gina",
  51. | "age": 89,
  52. | "friends": []
  53. | }
  54. | ]
  55. |}
  56. """.stripMargin, classOf[User]))
  57. }
Add Comment
Please, Sign In to add comment