zoukankan      html  css  js  c++  java
  • java bean、List、数组、map和Json的相互转化

    工程

     json包为 

    代码

    package com.my.json;
    
    
    public class ChildBean {
    
        private String childName;
    
        private String childSex;
    
        private int childAge;
    
        public ChildBean()
        {
            
        }
        public ChildBean(String childName, String childSex, int childAge) {
            this.childName = childName;
            this.childSex = childSex;
            this.childAge = childAge;
        }
    
         
        public String getChildName() {
            return childName;
        }
    
    
        public void setChildName(String childName) {
            this.childName = childName;
        }
    
    
        public String getChildSex() {
            return childSex;
        }
    
    
        public void setChildSex(String childSex) {
            this.childSex = childSex;
        }
    
    
        public int getChildAge() {
            return childAge;
        }
    
    
        public void setChildAge(int childAge) {
            this.childAge = childAge;
        }
    
    
        @Override
        public String toString() {
            return "ChildBean [childName=" + childName + ", childSex=" + childSex + ", childAge=" + childAge + "]";
        }
    
    }
    package com.my.json;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Person {
    
        private String name;
    
        private List<ChildBean> list = new ArrayList<ChildBean>();
    
        private int num;
    
        private String sex;
    
        private int age;
    
        public Person() {
    
        }
    
        public Person(String name, int num, String sex, int age) {
            super();
            this.name = name;
            this.num = num;
            this.sex = sex;
            this.age = age;
        }
    
        public int getAge() {
            return age;
        }
    
        public String getName() {
            return name;
        }
    
        public int getNum() {
            return num;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setNum(int num) {
            this.num = num;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public List<ChildBean> getList() {
            return list;
        }
    
        public void setList(List<ChildBean> list) {
            this.list = list;
        }
    
        @Override
        public String toString() {
            return "Person [name=" + name + ", num=" + num + ", sex=" + sex + ", age=" + age + ",list=" + list + "]";
        }
    
    }
    package com.my.json;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    import net.sf.json.JSONSerializer;
    import net.sf.json.JsonConfig;
    
    public class JsonUtil {
    
        /**
         * 简单类型:Json转化为bean
         * 
         * @param jsonString
         * @param pojoCalss
         * @return
         */
        public static Object jsonString2Object(String jsonString, Class pojoCalss) {
    
            JSONObject jsonObject = JSONObject.fromObject(jsonString);
    
            Object pojo = JSONObject.toBean(jsonObject, pojoCalss);
    
            return pojo;
    
        }
    
        /**
         * 复杂类型:Json转化为bean<br>
         * 用法示例:<br>
         * Map<String, Class> classMap = new HashMap<String, Class>();
         * classMap.put("list", ChildBean.class); //指定复杂类型属性的映射关系,可以使多个放到map中<br>
         * Person person=(Person)JsonUtil.jsonString2Object(str2, Person.class,
         * classMap);<br>
         * 
         * @param jsonString
         * @param pojoCalss
         * @return
         */
        public static Object jsonString2Object(String jsonString, Class pojoCalss, Map<String, Class> classMap) {
            JSONObject jobj = JSONObject.fromObject(jsonString);
            return JSONObject.toBean(jobj, pojoCalss, classMap);
        }
    
        /**
         * 简单|复杂类型:将java对象转换成json字符串<br>
         * 支持复杂类型:Java bean 中既有属性又有list
         * 
         * @param javaObj
         * @return
         */
        public static String object2JsonString(Object javaObj) {
    
            JSONObject json = JSONObject.fromObject(javaObj);
    
            return json.toString();
    
        }
    
        /**
         * 从json对象集合表达式中得到一个java对象列表
         * 
         * @param jsonString
         * @param pojoClass
         * @return
         */
        public static List jsonList2JavaList(String jsonString, Class pojoClass) {
    
            JSONArray jsonArray = JSONArray.fromObject(jsonString);
    
            JSONObject jsonObject;
    
            Object pojoValue;
    
            List list = new ArrayList();
    
            for (int i = 0; i < jsonArray.size(); i++) {
    
                jsonObject = jsonArray.getJSONObject(i);
    
                pojoValue = JSONObject.toBean(jsonObject, pojoClass);
    
                list.add(pojoValue);
    
            }
    
            return list;
    
        }
    
        /**
         * 从java对象集合表达式中得到一个json列表
         * 
         * @param list
         * @return
         */
        public static String javaList2JsonList(List list) {
    
            JSONArray jsonArray = JSONArray.fromObject(list);
            return jsonArray.toString();
        }
    
        /**
         * 数组转换为JSON
         * 
         * @param array
         * @return
         */
        public static String javaArray2Json(Object[] array) {
            JSONArray jsonarray = JSONArray.fromObject(array);
            return jsonarray.toString();
        }
    
        /**
         * Json数组转化为Java数组
         * 
         * @param jsonArray
         * @param clas
         * @return
         */
        public static Object jsonArray2JavaArrray(String jsonArray, Class clas) {
            JsonConfig jconfig = new JsonConfig();
            jconfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);
            jconfig.setRootClass(clas);
            JSONArray jarr = JSONArray.fromObject(jsonArray);
            return JSONSerializer.toJava(jarr, jconfig);
        }
    
        /**
         * Map转换成json
         * @param map
         * @return
         */
        public static String javaMap2Json(Map<String, Object> map) {
            return JSONObject.fromObject(map).toString();
        }
        
        /**
         * json转化为map
         * @param jsonString
         * @param pojoCalss
         * @return
         */
        public static Object javaMap2Json(String jsonString, Class pojoCalss) {
            return jsonString2Object(jsonString, pojoCalss);//调用方法jsonString2Object
        }
    
    }
    package com.my.json;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class Test {
        @SuppressWarnings("unchecked")
        public static void main(String[] args) {
    
            // 普通bean转化Json
            System.out.println("普通bean转化Json:");
            ChildBean p = new ChildBean("wwwww", "boy", 23);
            String str = JsonUtil.object2JsonString(p);
            System.out.println(str);
    
            // 普通Json转化bean,如 {"childAge":23,"childName":"wwwww","childSex":"boy"}
            System.out.println("普通Json转化bean:");
            ChildBean c = (ChildBean) JsonUtil.jsonString2Object(str, ChildBean.class);
            System.out.println(c);
    
            // Java List转化为Json
            System.out.println("Java List转化为Json:");
            List<ChildBean> list = new ArrayList<ChildBean>();
            for (int i = 0; i < 5; i++) {
                ChildBean childBean = new ChildBean("wwwww" + i, "boy", i);
                list.add(childBean);
            }
            String jsonList = JsonUtil.javaList2JsonList(list);
            System.out.println(jsonList);
    
            // json 列表转化为Java List
            System.out.println("json 列表转化为Java List:");
            List<ChildBean> l = (List<ChildBean>) JsonUtil.jsonList2JavaList(jsonList, ChildBean.class);
            System.out.println(l);
    
            // 复杂bean转化为Json
            System.out.println("复杂bean转化为Json:");
            List<ChildBean> list2 = new ArrayList<ChildBean>();
            for (int i = 0; i < 10; i++) {
                ChildBean childBean = new ChildBean("aaaaaa" + i, "boy", i);
                list2.add(childBean);
            }
            Person me = new Person("zhang", 1, "man", 1);
            me.setList(list2);
    
            String str2 = JsonUtil.object2JsonString(me);
            System.out.println("str2=" + str2);
    
            // 复杂Json转化bean
            System.out.println("复杂Json转化bean:");
            Map<String, Class> classMap = new HashMap<String, Class>();
            classMap.put("list", ChildBean.class); // 指定复杂类型属性的映射关系,可以使多个放到map中
            Person person = (Person) JsonUtil.jsonString2Object(str2, Person.class, classMap);
            System.out.println(person);
            System.out.println(person.getList().get(0).getChildName());
    
            // Java数组转换为JSON
            System.out.println("java数组转换为JSON:");
            // String[] array = {"asd","dfgd","asd","234"};
            ChildBean[] array = new ChildBean[10];
            for (int i = 0; i < 10; i++) {
                ChildBean childBean = new ChildBean("aaaaaa" + i, "boy", i);
                array[i] = childBean;
            }
            String jsonArray = JsonUtil.javaArray2Json(array);
            System.out.println(jsonArray);
    
            // Json数组转化为Java数组
            System.out.println("Json数组转化为Java数组:");
            ChildBean[] cb = (ChildBean[]) JsonUtil.jsonArray2JavaArrray(jsonArray, ChildBean.class);
            System.out.println(Arrays.toString(cb));
    
            //Map转换成json
            System.out.println("Map转换成json:");
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("userId", 1000);
            map.put("userName", "张三");
            map.put("userSex", "男");
            String jsonStr = JsonUtil.javaMap2Json(map);
            System.out.println(jsonStr);
            
            //json转化为map
            System.out.println("json转化为map:");
            Map<String, Object> jmap = (Map<String, Object>)JsonUtil.javaMap2Json(jsonStr, Map.class);
            System.out.println(jmap);
        }
    }

    注意:

    1.代转化的bean如果自定义了构造方法,必须写上默认的构造方法,否则Json转化时候,曝出init()方法找不到!

    2.对于Date和Timestamp日期类型字段需要单独处理(本例不含这种类型,请参看我的博客《含有Date和Timestamp的Java和Json互相转化》)

  • 相关阅读:
    小程序开发之初体验
    phantomjs 爬去动态页面
    css实现三角形
    多种方式实现千位分隔符
    基于浏览器的人脸识别标记
    Axios源码阅读笔记#1 默认配置项
    基于图形检测API(shape detection API)的人脸检测
    页面性能优化
    目标
    HelloWorld!
  • 原文地址:https://www.cnblogs.com/qqzy168/p/3938937.html
Copyright © 2011-2022 走看看