2011-10-03 123 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

回答