On the client-side: JsonUtils.safeEval for parsing, with JS overlay classes, and new JSONObject(jso).toString() for serialization (unfortunately not that great for performance, as it creates bunch of temporary objects: one for each value in your objects) work well.
For better performance on the client-side, and/or if you also want server-side support, have a look at AutoBeans. Use GWT.create() on an AutoBeanFactory on the client-side, and an AutoBeanSource on the server-side, and the everything else can be shared between client-side and server-side.