users@jersey.java.net

Re: application/json programming model

From: Marc Hadley <Marc.Hadley_at_Sun.COM>
Date: Thu, 30 Aug 2007 16:32:07 -0400

What you propose would certainly be possible. You'd have to write a
custom EntityProvider that will serialize and deserialize instances
of classes with those annotations.

Have you looked at the JSON support in the JAXB entity provider that
Jakub added ? Take a look at the Bookmark example that shows it in
use. You might not be able to get the exact JSON format you show
below but I'd bet you could get close just using some of the JAXB
annotations.

Marc.

On Aug 30, 2007, at 2:33 PM, Arun Gupta wrote:

> In order to return a JSON array like:
>
> [{"name":"California","value":"California"},{"name":"New
> York","value":"New York"},{"name":"Alabama" ,"value":"Alabama"},
> {"name":"Texas","value":"Texas"}]
>
> I have to write the following code:
>
> -- cut here --
> @HttpMethod("GET")
> @ProduceMime("application/json")
> public JSONArray getMessage() throws JSONException {
> String[] states = { "California", "New York", "Alabama",
> "Texas"};
> JSONArray array = new JSONArray();
> for (String s : states) {
> JSONObject item = new JSONObject();
> item.put("name", s).put("value", s);
> array.put(item);
> }
>
> return array;
> }
> -- cut here --
>
> I think this is too involving and low-level. Can the code be
> something like the following ?
>
> -- cut here --
> @JSONObject
> ItemBean {
> ItemBean(String name, String value) { ... }
>
> @JSONObjectKey
> public String getName() { ... }
>
> @JSONObjectValue("value")
> public String getNameValue() { ... }
> }
>
> @HttpMethod("GET")
> @ProduceMime("application/json")
> public List<ItemBean> getMessage() {
> String[] states = { "California", "New York", "Alabama",
> "Texas"};
> List<ItemBean> list = new ArrayList<ItemBean>();
> for (String s : states) {
> ItemBean bean = new ItemBean(s, s);
> list.add(bean);
> }
>
> return list;
> }
> -- cut here --
>
> This will require defining new annotations JSONObject,
> JSONObjectKey & JSONObjectValue. I think this is more natural to a
> Java developer.
>
> -Arun
> --
> Web Technologies and Standards
> Sun Microsystems, Inc.
> Blog: http://blogs.sun.com/arungupta
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>

---
Marc Hadley <marc.hadley at sun.com>
CTO Office, Sun Microsystems.