在Struts 2项目中,我们需要对对象进行序列化和反序列化,因为我们的要求非常简单,因此我们决定使用Struts 2 JSONUtil
代替gson
。
import org.apache.struts2.json;
String json = JSONUtil.serialize(myAccountVO);
// return: {"accountNumber":"0105069413007","amount":"1500","balance":"215000"}
对于
deserialization
,我们面对class cast exception
AccountVO vo =(AccountVO) JSONUtil.deserialize(json);
//Exception
我发现
deserialization
返回一个带有对象属性键值的映射。因此,我必须这样做:HashMap<String,String> map = (HashMap) JSONUtil.deserialize(string)
accountVo.setAccountNumber(map.get("accountNumber"));
....
好吧,我可以做得更好,或者我对这个实用程序期望太多。
最佳答案
反序列化JSON之后,可以使用JSONPopulator
从地图填充bean属性。例如。
JSONPopulator populator = new JSONPopulator();
AccountVO vo = new AccountVO();
populator.populateObject(vo, map);