Json与bean的相互转换

本文使用json-lib jar包实现Json与bean的相互转换


1.将字符串转为JSON

使用JSONObject.fromObject(str)方法即可将字符串转为JSON对象

使用JSONObject.put("attribute","value")可为JSON添加属性

如果需要转为JSON数组,只需使用JSONArray对象提供的方法即可

  /**
     * 一些简单的转换
     */
    public static void transformStringTest() {
        String str = "{" + "\"id\":" + "\"1\"," + "\"name\":" + "\"zhangsan\""
                + "}";
        //1.将字符串转为JSON
        JSONObject jsonObj = JSONObject.fromObject(str);
        System.out.println(jsonObj.toString());
        //JSON添加属性
        jsonObj.put("age", "22");
        System.out.println(jsonObj.toString());
        //2.将对象转为数组
        JSONArray jsonArr = JSONArray.fromObject(jsonObj);
        System.out.println(jsonArr.toString());
        //3.将数组添加到JSON对象中
        JSONObject obj = new JSONObject();
        obj.put("employees", jsonArr);
        System.out.println(obj.toString());
    }
    /* 输出内容
     * {"id":"1","name":"zhangsan"} 
     * {"id":"1","name":"zhangsan","age":"22"}
     * [{"id":"1","name":"zhangsan","age":"22"}]
     * {"employees":[{"id":"1","name":"zhangsan","age":"22"}]}
     */


2.将对象转为JSON

首先创建People类

public class People {
    private String name;

    private String idcard;

    public People() {
    }

    public People(String name, String idcard) {
        this.name = name;
        this.idcard = idcard;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getIdcard() {
        return idcard;
    }

    public void setIdcard(String idcard) {
        this.idcard = idcard;
    }

}

将对象转为JSON同样使用SONObject.fromObject(obj)方法

如果是一个List,转为JSON时需要使用JSONArray将对象转为JSON数组

public static void transformObjectTest() {
        People p1 = new People("a", "111111");
        //1.将对象转为json
        System.out.println(JSONObject.fromObject(p1));
        List peopleList = new ArrayList();
        peopleList.add(p1);
        //2.将list转为json(需要使用数组JSONArray)
        JSONArray arr = JSONArray.fromObject(peopleList);
        System.out.println(arr.toString());
    } 

 /*输出内容
     * {"idcard":"111111","name":"a"} 
     * [{"idcard":"111111","name":"a"}]
     */

3.JSON转为bean

json转为bean的方法也非常简单,只需使用JSONObject.toBean()方法即可,使用该方法的时候需要传入Bean的class

/**
     * 将json转换为bean
     * @param json
     * @param type
     * @return
     */
    public static  Object transformJsonToBean(String json, Class type) {
        JSONObject jsonObject = JSONObject.fromObject(json);
        return JSONObject.toBean(jsonObject, type);
    }


4.JSON转为list集合

由于是集合,所以需要使用JSONArray,JSONArray提供了toCollection方法,使用该方法同样需要传入bean的class

 public static  Object transformJsonToBeanList(String jsonArr,
            Class type) {
        JSONArray jsonArray = JSONArray.fromObject(jsonArr);
        return JSONArray.toCollection(jsonArray, type);
    }


5.测试

public class Test {
    public static void main(String[] args) {

        //transformStringTest();
        //transformObjectTest();
        People p1 = new People("a", "111111");
        String json = JSONObject.fromObject(p1).toString();
        //将json转换为bean
        People p = (People) transformJsonToBean(json, People.class);
        System.out.println(p.getName());
        System.out.println(p.getIdcard());

        List peopleList = new ArrayList();
        peopleList.add(p1);
        JSONArray jsonArr = JSONArray.fromObject(peopleList);
        //将json数组转为list
        List list = (List) transformJsonToBeanList(
            jsonArr.toString(), People.class);
        System.out.println(list.size());

    }

代码下载:http://download.csdn.net/detail/lom9357bye/9690304


你可能感兴趣的:(java)