【发布时间】:2012-06-11 10:29:50
【问题描述】:
我的项目中有一些模型类,如Customer、Product 等,它们有几个字段及其setter-getter 方法,我需要通过套接字将这些类的对象交换为JSONObject 往返于客户端和服务器。
有没有什么方法可以直接从模型类的对象创建JSONObject,这样对象的字段就成为该模型类对象的键,而该模型类对象的值成为此 JSONObject 的值。
例子:
Customer c = new Customer();
c.setName("Foo Bar");
c.setCity("Atlantis");
.....
/* More such setters and corresponding getters when I need the values */
.....
我创建 JSON 对象为:
JSONObject jsonc = new JSONObject(c); //I'll use this only once I'm done setting all values.
这让我得到了类似的东西:
{"name":"Foo Bar","city":"Atlantis"...}
请注意,在我的某些模型类中,某些属性本身是其他模型类的对象。如:
Product p = new Product();
p.setName("FooBar Cookies");
p.setProductType("Food");
c.setBoughtProduct(p);
在上述情况下,如我所料,生成的 JSON 对象将是:
{"name":"Foo Bar","city":"Atlantis","bought":{"productname":"FooBar Cookies","producttype":"food"}}
我知道我可以在每个模型类中创建类似 toJSONString() 的东西,然后创建和操作 JSON 友好的字符串,但是在我之前用 Java 创建 RESTful 服务的经验中(这完全脱离了上下文问题),我可以使用@Produces(MediaType.APPLICATION_JSON)从服务方法返回JSON字符串,并让方法返回模型类的对象。所以它生成了 JSON 字符串,我可以在客户端使用它。
我想知道在当前情况下是否有可能获得类似的行为。
【问题讨论】: