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

17 浏览
0 Comments

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

我在项目中有一些模型类,如CustomerProduct等,它们有几个字段和它们的setter-getter方法,我需要通过套接字在客户端和服务器之间以JSONObject的形式交换这些类的对象。

有没有办法可以直接从模型类的对象创建JSONObject,使得对象的字段成为键,该模型类对象的值成为该JSONObject的值。

例如:

Customer c = new Customer();
c.setName("Foo Bar");
c.setCity("Atlantis");
.....
/* 当我需要这些值时,还有更多这样的setter和对应的getter */
.....

然后我创建JSON对象:

JSONObject jsonc = new JSONObject(c); //我只会在设置完所有值后使用这个。

这样就得到了类似于:

{"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字符串,我可以在客户端使用。

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

0