首页 > 代码库 > json-lib之jsonConfig详细使用
json-lib之jsonConfig详细使用
一、防止包自含
在JSON-LIB中,要转换的对象包含自身对象时,会抛出异常There is a cycle in the hierarchy,解决办法:
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);二、自定义要被转换的字段
config.setJsonPropertyFilter(new PropertyFilter() { @Override public boolean apply(Object source, String name, Object value) { // TODO Auto-generated method stub if (name.equals("id") || name.equals("serialNumber") || name.equals("productName") || name.equals("emailAddress") || name.equals("applySatus") || name.equals("remark") || name.equals("applyStatusLabel") || name.equals("applyDate")) {
<span style="white-space:pre"> </span>//这些字段会被转换 return false; } return true; } });三、解决延迟加载产生异常的问题(net.sf.json.JSONException: java.lang.reflect.InvocationTargetException)
JsonConfig config = new JsonConfig(); // 解决延迟加载产生异常的问题 config.setExcludes(new String[] { "handler", "hibernateLazyInitializer" });四、解决数据库查询结果中,Date转换的问题(net.sf.json.JSONException: java.lang.reflect.InvocationTargetException)
config.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessor() { @Override public Object processArrayValue(Object obj, JsonConfig jsonconfig) { return null; } @Override public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) { if (value =http://www.mamicode.com/= null)>五、结果转换有些字段的类型是枚举类型,可以在转换的时候将值设置为枚举类的value或者是label
config.registerJsonValueProcessor(ApproveStateType.class, new JsonValueProcessor() { @Override public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) { // TODO Auto-generated method stub if (value instanceof ApproveStateType) { ApproveStateType tmpValue = http://www.mamicode.com/(ApproveStateType) value;>
json-lib之jsonConfig详细使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。