码迷,mamicode.com
首页 > Web开发 > 详细

json-lib之复杂数据类型的转换

时间:2016-10-07 23:12:45      阅读:385      评论:0      收藏:0      [点我收藏+]

标签:

在json字符串转java bean时,一般的对象,可以直接转,如:一个学生类,属性有姓名、年龄等

    public class Student{  

        private String sname;  
        private Integer age;  
        public String getSname() {  
            return sname;  
        }  
        public void setSname(String sname) {  
            this.sname = sname;  
        }  
        public Integer getAge() {  
            return age;  
        }  
        public void setAge(Integer age) {  
            this.age = age;  
        }  
          
    }  

由字符串转java bean时可以使用以下方法:

    JSONObject jobj = JSONObject.fromObject(str);  
    Student s = (Student) JSONObject.tobean(jobj,Student.class);  

是没有问题的,但是如果属性中含有复杂的类型,当其中属性有类似List , Map ,ArrayList、自定义的类型,如List<Teacher> teachers, 就不可以了。 会报错:MorphDynaBean cannot be cast to con.test……

    在JSONObject.toBean的时候如果转换的类中有集合,可以先定义Map<String, Class> classMap = new HashMap<String, Class>();在classMap中put你要转换的类中的集合名,像:classMap.put("teachers", Teacher.class);然后在toBean()的时候把参数加上, 像:Student student=(Student) JSONObject.toBean(str, Student.class, classMap);

 比如我定义了如下类型:

 

    import java.util.List;  

    public class AnalysisModel{  
      
        /** 
         * 固定条件 
         */  
        private List<Condition> regularCondtionList;//  
        /** 
         * 动态条件 
         */  
        private List<ConditionField> dynamicConFieldList;  
        /** 
         * 结果 
         */  
        private List<ResultField> resultField;  
        /** 
         * 获取前多少条数据 
         */  
        private Integer topnum;  
        /** 
         * 顺序还是随机 
         */  
        private String sortFlag;  
        /** 
         * 备注 
         */  
        private String remark;  
        /** 
         * 模型名称 
         */  
        private String modelName;  
        /** 
         * 对应的xml文件名称 
         */  
        private String fileName;  
        public List<Condition> getRegularCondtionList() {  
            return regularCondtionList;  
        }  
        public void setRegularCondtionList(List<Condition> regularCondtionList) {  
            this.regularCondtionList = regularCondtionList;  
        }  
        public List<ConditionField> getDynamicConFieldList() {  
            return dynamicConFieldList;  
        }  
        public void setDynamicConFieldList(List<ConditionField> dynamicConFieldList) {  
            this.dynamicConFieldList = dynamicConFieldList;  
        }  
        public Integer getTopnum() {  
            return topnum;  
        }  
        public void setTopnum(Integer topnum) {  
            this.topnum = topnum;  
        }  
        public String getSortFlag() {  
            return sortFlag;  
        }  
        public void setSortFlag(String sortFlag) {  
            this.sortFlag = sortFlag;  
        }  
        public String getRemark() {  
            return remark;  
        }  
        public void setRemark(String remark) {  
            this.remark = remark;  
        }  
      
          
        public String getModelName() {  
            return modelName;  
        }  
        public void setModelName(String modelName) {  
            this.modelName = modelName;  
        }  
        public List<ResultField> getResultField() {  
            return resultField;  
        }  
        public void setResultField(List<ResultField> resultField) {  
            this.resultField = resultField;  
        }  
        public String getFileName() {  
            return fileName;  
        }  
        public void setFileName(String fileName) {  
            this.fileName = fileName;  
        }  
          
    }  

在转化的时候需要这样来写:

    Map<String, Class> classMap = new HashMap<String, Class>();  
      
    classMap.put("regularCondtionList", Condition.class);  
      
    classMap.put("dynamicConFieldList", ConditionField.class);  
      
    classMap.put("resultField", ResultField.class);  
      
    AnalysisModel analysisModel=(AnalysisModel) JSONObject.toBean(str, AnalysisModel.class, classMap);  

 

json-lib之复杂数据类型的转换

标签:

原文地址:http://www.cnblogs.com/yuanchengxu/p/5936832.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!