直接从Java中的模型类创建JSON对象

我在项目中有一些模型类,如客户,产品等,它们有几个字段和setter-getter方法,我需要通过Sockets将这些类的对象作为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"}}

我知道我可以在每个模型类中创建一个像JSONString()这样的东西,并且可以创建和操作JSON友好的字符串,但是根据我之前在Java中创建RESTful服务的经验(这完全不是这个问题的上下文)我可以通过使用@Produces(MediaType.APPLICATION_JSON)从服务方法返回JSON字符串,并返回模型类的对象。所以它产生了我可以在客户端使用的JSON字符串。

我想知道是否可能在当前的情况下获得类似的行为。

任何帮助或建议是赞赏。
谢谢。

Google GSON这样做我已经在几个项目中使用它,它很简单,效果很好。它可以在没有干预的情况下进行简单对象的翻译,但是还有一种自定义翻译(双向)的机制。

Gson g = ...;
String jsonString = g.toJson(new Customer());
http://stackoverflow.com/questions/10930624/creating-json-objects-directly-from-model-classes-in-java

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:直接从Java中的模型类创建JSON对象