2011-10-03 172 views
0

我使用标准的Spring MVC框架的3倍,并有我的模型实体都建立了所有的好东西的关系(javax.persistence API)......我的DB集成。JSON对象VS弹簧模型对象

随着应用的发展,我们需要支持JSON调用。

鉴于我在我的模型实体层映射出的各种关系,

(classX->优雅以及classY-> classX)

我想知道最好的做法是什么将这些模型类中的一些转换为适当的JSON对象而不会有重复的引用?

如:样品车响应

{"classX":{"id":"1", "classY":{"id":"2", "classX":{"id":"1", "classY":{"id":"2"... 

我考虑了几个方法的,我不会介意的反馈...

  1. 保留现有的模型类,并设置交叉关系在将其放入我的ModelMap之前为NULL,因此不会有某种形式的重新引用(我认为它是HACK)

    {"classX":{"id":"1", "classY":{"id":"2", "classX":null}}} 
    
  2. 重新创建JSON类相似,而无需再引用类的现有模式(但我认为这意味着他们不会为可重用......因为我最终将只具有classX->优雅而不是倒退,如果我想钻另一种方式进行数据响应)。

    {"jsonClassX": {"id":"1", "jsonClassY":{"id":"2"}}} 
    
  3. 只需简单地构建它作为标准ModelMap映射每个控制器的呼叫。作为这种不可重复使用JSON类的概念,并且是依赖于方式控制器构建体和组织的返回值。这似乎是最简单的,但它意味着没有可重用的代码(除了剪切和粘贴)...

    {"x":{"id":"1", "y":{"id":"2"}}} // for controller call 1 
    {"y":{"id":"2", "x":{"id":"1"}}} // for controller call 2 
    

因此,这些都是我与此刻杂耍的选项,我不会介绍一些反馈意见,并提供一些关于其他人如何做的指示。

+0

这是直接来自第三方库,如杰克逊,还是来自您自己的翻译代码? – atrain

+0

@AaronSheffey嗨,它只是标准的Spring配置的东西 '公共地图@ResponseBody <字符串,?扩展Object> ...' – alwinc

回答