2011-04-19 40 views
1

你可以推薦一個Json解串器,它可以反序列化到現有對象(合併2個對象)?
當用戶提交表單我想的是保存到數據庫是這樣的:json解串器到目標對象

這是來自客戶端的JSON:

{"affiliateId":1,"name":"First Affiliate","email":"[email protected]","user.userName":"test","user.password":"pass-hashed","employee.employeeId":1} 


Affiliate affiliateFromDb = affiliateApi.getFromDbById(1); 

SomeDeserialization json = new SomeDeserialization(); 
affiliateFromDb = json.fromJson(affiliateFromJson , affiliateFromDb);//affiliateFromDb = target bean 

意思就是我想要的affiliateFromJson要插值到affiliateFromDb。
比我會打電話給

affiliateApi.save(affiliateFromDb); 

請注意,JSON蘊含深厚的反序列化,user.userName

感謝

回答

0

使用Gson!具體請參閱Object Examples

class BagOfPrimitives { 
    private int value1 = 1; 
    private String value2 = "abc"; 
    private transient int value3 = 3; 
    BagOfPrimitives() { 
    // no-args constructor 
    } 
} 

BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class); 

,唯一的缺點在這裏—但你與任何其他JSON(反)序列—此相同的問題是非標準「深」對象,你要使用的格式。你將不得不使用這樣的事情,而不是:

{"affiliateId":1,"name":"First Affiliate","email":"[email protected]","user": {"userName":"test","password":"pass-hashed"},"employee.employeeId":1} 
+0

謝謝,但如果是合併在這裏?我想將該對象與現有對象合併。再次看到我的代碼mayby,謝謝 – fatnjazzy 2011-04-19 19:40:16

+0

我不認爲你會找到一個JSON庫來爲你做這件事。在'Affiliate'對象上寫一個自定義的方法,像'Affiliate#mergeWith(Affiliate other)'。 – 2011-04-19 19:51:29

0

http://www.json.org/javadoc/org/json/JSONObject.html

JSONObject jsonResponse = new JSONObject(responseString); 
+0

謝謝,但這裏的合併在哪裏?我想將該對象與現有對象合併。再次看到我的代碼mayby,謝謝 – fatnjazzy 2011-04-19 19:40:33

+0

http://stackoverflow.com/questions/2403132/concat-multiple-jsonobjects – 2011-04-19 20:02:52