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互相转化》)

时间: 2024-10-12 09:12:04

java bean、List、数组、map和Json的相互转化的相关文章

JSONObject.fromObject(map)(JSON与JAVA数据的转换)

JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互.) 上一篇文章中有这么一句,是后台的封装数据. JSONObject jo = JSONObject.fromObject(map);常见的java代码转换成json 1. List集合转换成json代码 List list = new ArrayList(); list.add( "first" ); lis

json学习初体验--第三者jar包实现bean、List、map创json格式

1.的需要jar包裹json-lib.jar 下载链接: http://sourceforge.net/projects/json-lib/files/json-lib/ 此包还须要下面的依赖包, commons-lang.jar commons-beanutils .jar commons-collections.jar commons-logging.jar ezmorph.jar 2.创建javabean文件,以以下的为例: <span style="font-size:18px;&

java处理json的工具类(list,map和json的之间的转换)

需要下载第三方的jar :net.sf.json import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java

Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发

Android 网络请求一般都涉及到图片和JSON数据,怎样快速的请求网络JSON数据,解析JSON数据,并且一步生成自己想要的Java bean实体类?这个涉及到Android 开发效率的问题.由于接触Android 网络这方面比较多,自然就找到一些好的方法来快速开发Android 网络模块的相关内容,接下来就为大家揭晓 一步快速请求,解析JSON 数据生成对应的Java bean实体类的方法. 注:我们先把思路讲解下吧: 1.网络请求JSON数据代码可以自己写,当然我还是推荐使用网络上开源的

json学习初体验--使用第三方的jar包实现bean、List、map创建json格式

1.需要的jar包json-lib.jar 下载地址: http://sourceforge.net/projects/json-lib/files/json-lib/ 此包还需要以下的依赖包, 2.创建javabean文件,以下面的为例: <span style="font-size:18px;">package com.gdhdcy.whp; public class person_bean { public int id; public int getId() { r

Java bean 转 Map

Java bean 转 Map 时需要使用Fastjson //方法 一 Map<String, Object> a = (Map<String, Object>)JSON.toJSON(javabean) //方法 二 Map<String, Object> a = JSON.parseObject(JSON.toJSONString(javabean)) 另外也可以使用 使用 BeanUtils Map beanMap = BeanUtils.describe(ja

如何快速通过json构建java bean对象

和第三方对接的时候,返回给我们的json时参数字段多是很常见的现象,所以我们手动去创建javabean肯定是要花费不少时间,可用通过json自动生成javabean的工具,这里简单的介绍一下Intellij IDEA 中的插件GsonFormat. 1.什么是GsonFormat 将json数据格式转换为java bean对象的as插件. 2.快捷键 Ctrl+ALT+S,或settings -->Plugins -->输入GsonFormat   install plugins 安装完成,重

spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable

1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(value = { "/actor_details" }, method = { RequestMethod.POST }) @ResponseBody public ResultObject actorDetails(@RequestBody ActorDetailsRequest req)

使用谷歌Gson实现Json串和Java Bean互转

/** * 使用谷歌Gson实现Json串和Java Bean互转 */ public class JsonHelper { public static String toJson(Object src){ return new Gson().toJson(src); } public static <T> T fromJson(String json, Class<T> clazz) throws Exception { return new Gson().fromJson(js