Skip to content

Instantly share code, notes, and snippets.

@manuelbernhardt
Created September 28, 2011 19:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save manuelbernhardt/1249014 to your computer and use it in GitHub Desktop.
Save manuelbernhardt/1249014 to your computer and use it in GitHub Desktop.
ObjectId de/serializer for Jerkson
@JsonCachable
class ObjectIdSerializer extends JsonSerializer[ObjectId] {
def serialize(id: ObjectId, json: JsonGenerator, provider: SerializerProvider) {
json.writeString(id.toString)
}
}
class ObjectIdDeserializer extends JsonDeserializer[ObjectId] {
def deserialize(jp: JsonParser, context: DeserializationContext) = {
if (!ObjectId.isValid(jp.getText)) throw context.mappingException("invalid ObjectId " + jp.getText)
new ObjectId(jp.getText)
}
}
object CustomJson extends com.codahale.jerkson.Json {
// this is where we setup our Jackson module for custom de/serialization
val module = new SimpleModule("Custom", Version.unknownVersion())
module.addSerializer(classOf[ObjectId], new ObjectIdSerializer)
module.addDeserializer(classOf[ObjectId], new ObjectIdDeserializer)
mapper.registerModule(module)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment