2011-04-19 44 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