2012-02-27 57 views
2

我有以下要求初始化JSON對象。爲了解決這個問題,我打算爲這個數據創建一個java bean表示,並在服務器端將適配器從這個壓縮格式寫入bean格式,反之亦然。 此外,爲了讓客戶端的JavaScript來操縱這個,我打算使用像Jackson這樣的庫將這個bean轉換爲json。從一個Java bean

現在,使用這種方法,客戶端將獲取數據作爲從這個bean創建的json對象,這可能是合適的,它也有能力創建新的這樣的對象。現在我對此有以下問題 -

  1. 這是一種有效的方法還是需要更改一些內容?
  2. 有沒有一種方法可以在JavaScript中強制執行這個新的json對象初始化,使其成爲可以映射到此bean的結構,從而對bean結構的任何更改都不會提示我明確更改此json對象定義?
+0

是否有人可以幫助這裏?謝謝! – kshitij 2012-02-28 18:52:52

回答

0

你對我來說似乎是一個很好的方法,所以沒什麼可說的。 如果您希望能夠在客戶端創建JavaBean的新實例,同時使其與服務器端結構保持同步,那麼您可以向客戶端提供一個「代理」對象,您可以使用它來創建新實例。此代理由服務器隨時生成,將始終能夠創建與您的服務器端副本始終保持同步的客戶端對象的正確實例。

例(很粗糙,它只是給你一個想法):

1)包括您的JavaBeans

<script src="/server/url/mapped/to/servlet/ssproxy.js"></script> 

代理,通過一個Servlet動態生成的服務器端生成的代理,將包含必要的JavaScript代碼來創建你的服務器端對象的新的客戶端實例(這裏使用顯露的模塊模式):

2)您ssproxy.js(由服務器產生的)內容:

var server = {}; 
server.Proxy = (function(){ 
    function _extend(obj, additional) { 
     //copy properties from additional into obj 
     //... I'll leave that to you... 
    } 
    function _createObject(config) { 
     var default = { 
      attribute1:'', 
      attribute2:'' 
     }; 
     //you can implement something 
     //like jQuery extend() function here 
     //to override default values with passed in args 
     _extend(default, config); 
     return default; 
    } 
    return { 
     createObject: _createObject 
    }; 
}()); 

你可以使用它,然後創建對象,當你需要它:

var newobj = server.Proxy.createObject({attribute1:'custom value'}); 
相關問題