Skip to main content

Posts

Showing posts with the label lift-json

Instantiate a type based on json and metadata using lift-json

I would like to deserialise Scala case classes that have been serialised using lift-json. The problem I am having is, I don't know how to invoke the generic method extractOpt[A] method below: someString:String = {...} JsonParser.parse(someString).extractOpt[A] The type of [A] is going to depend on metadata, for example the class name of [A] but for the life of me I can't work out how to make the call using reflection. In c# I would just be able to set the generic type for a call on extractOpt[A] using reflection. I fear my problems are something to do with Java type erasure. I am going to have a lot of case classes so I really want to avoid having to create some kind of hand crafted map from {metadata} -> classOf[]. I have full control over what the metadata associated with someString is. If it helps understand why I have this issue, I am implementing event sourcing, and all my [A] types are going to be persisted events. Any ideas what I can do?