在Java中直接从模型类创建JSON对象。
在Java中直接从模型类创建JSON对象。
我在项目中有一些模型类,如Customer
、Product
等,它们有几个字段和它们的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字符串,我可以在客户端使用。
我想知道在当前情况下是否有可能获得类似的行为。