Hi Sergey, If you give me until next week I should be able to package something together and send it to you.
Alternatively, this would be a great project for GSoC, if it's not too late to submit projects. Rewriting Sun libraries? Working with JSON? Hells yeah. Cheers, Gary -----Original Message----- From: Sergey Beryozkin [mailto:sbery...@progress.com] Sent: 06 April 2009 12:01 To: dev@cxf.apache.org Subject: Re: JSON in CXF Hi Gary >> >> I ended up writing my own converter for JSON that uses its own >> annotations seperate from JAXB. It's a pretty quick implementation, >> and only does what I need it to do. It depends on the JSON objects >> from json.org, which are also included in Jettison under a different >> package. The annotations can be used alongside JAXB like so: >> >> @XmlRootElement(name = "response") >> @JsonObject >> public class MyResponse { >> @XmlAttribute >> @JsonField >> private boolean success; >> @XmlElement(name = "msg") >> @JsonField(name = "msg") >> private String message; >> @XmlElementWrapper(name = "errors") >> @XmlElement(name = "error") >> @JsonField(name = "errors", required = true) private List<String> >> errors; ... >> } Would you be interested in updating the existing CXF JSONProvider (the one based on Jettison) for it to support @JsonObject/etc annotations ? I was about to do it myself but given my JSON experience (not great so to say) I thought I would ping you first :-) we can introduce a new package, org.apache.cxf.jaxrs.providers.json, or org.apache.cxf.jaxrs.ext.json, and add these annotations there, and then rely on the fact Jettison ships JSonObject/etc... cheers, Sergey >> >> This will produce this JSON: >> >> {success: true, msg: "Test Message", errors: ["a", "b"]} >> >> And this XML: >> >> <response success="true"><msg>Test >> Message</msg><errors><error>a</error><error>b</error></errors></respo >> nse> >> >> Since this was written only for personal use, it's a fair bit aways >> from being a full-featured library. Stuff that needs to be done >> before public >> consumption: >> >> 1) Two-way serialization. Currently it's only bean -> JSON but not >> the other way around. >> 2) Reflection caching. Currently all reflection happens in the >> middle of serialization. Breaking it up into reflection + >> serialization phases as JAXB does it would speed things up considerably. >> 3) Ability to switch between field/method accessors (currently it >> only reads >> fields) >> >> As well as some features that could be really useful such as: >> >> 1) Pluggable annotation adapters that can be used to read directly >> from JAXB annotations >> 2) Type adapters that will allow custom marshalling/unmarshalling, >> although this could also be done via getters/setters >> >> What's the interest level in putting something like this into CXF? >> >> Cheers, >> Gary >> -------------------------------------------------------------------------- NOTICE: If received in error, please destroy and notify sender. Sender does not intend to waive confidentiality or privilege. Use of this email is prohibited when received in error.