Actually, I don't like this.  I think that you don't need a from_json/2 function at all.  If you think about it, you should be able to accept both typed and untyped json serialization, and the format here doesn't matter.  I also don't see a way in from_json/1 below that you can deserialize an untyped event.