Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.lang.reflect.Type
- import java.util
- import com.google.gson._
- /**
- * Cannot get scala list to work nicely so resorted to Java List for the time being
- */
- object SimpleExample extends App {
- lazy val gson: Gson = new GsonBuilder()
- .registerTypeHierarchyAdapter(classOf[Seq[Any]], new ListSerializer)
- .setPrettyPrinting()
- .create()
- class ListSerializer extends JsonSerializer[Seq[Any]] {//with JsonDeserializer[Seq[Any]] {
- override def serialize(src: Seq[Any], typeOfSrc: Type, context: JsonSerializationContext): JsonElement = {
- import scala.collection.JavaConverters._
- context.serialize(src.toList.asJava)
- }
- // override def deserialize(json: JsonElement, typeOfT: Type, context: JsonDeserializationContext): Seq[Any] = {
- // if (json.isJsonArray) {
- // val array: JsonArray = json.getAsJsonArray
- // (for (i <- 0 until array.size()) yield context.deserialize(array.get(i).getAsJsonObject, typeOfT)).toList
- // } else {
- // context.deserialize(json.getAsJsonObject, typeOfT)
- // }
- // }
- }
- case class User(name: String, age: Int, friends: util.List[User])
- val friends : util.List[User] = new util.ArrayList
- friends.add(User("Dan", 5, new util.ArrayList))
- friends.add(User("Janis", 7, new util.ArrayList))
- val user: User = User("Jane", 12, friends)
- // val user: User = User("Jane", 12, List(User("Dan", 5, Nil), ArrayList("Janis", 7, Nil)))
- println(gson.toJson(user))
- println(gson.fromJson(
- """
- |{
- | "name": "john",
- | "age": 55,
- | "friends": [
- | {
- | "name": "Gina",
- | "age": 89,
- | "friends": []
- | }
- | ]
- |}
- """.stripMargin, classOf[User]))
- }
Add Comment
Please, Sign In to add comment