
com.twitter.server.util.Json.scala Maven / Gradle / Ivy
The newest version!
package com.twitter.server.util
private[server] object Json {
import com.fasterxml.jackson.core.`type`.TypeReference
import com.fasterxml.jackson.databind.{ObjectMapper, JsonNode}
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import java.lang.reflect.{Type, ParameterizedType}
val mapper: ObjectMapper = new ObjectMapper().registerModule(DefaultScalaModule)
def serialize(o: AnyRef): String = mapper.writeValueAsString(o)
def deserialize[T: Manifest](value: String): T =
mapper.readValue(value, typeReference[T])
def deserialize[T: Manifest](node: JsonNode): T =
mapper.readValue(node.traverse, typeReference[T])
private def typeReference[T: Manifest] = new TypeReference[T] {
override def getType = typeFromManifest(manifest[T])
}
private def typeFromManifest(m: Manifest[_]): Type =
if (m.typeArguments.isEmpty) m.runtimeClass
else new ParameterizedType {
def getRawType = m.runtimeClass
def getActualTypeArguments = m.typeArguments.map(typeFromManifest).toArray
def getOwnerType = null
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy