json学习系列(8)JSON与JAVA数据的相互转换实例

一.完整案例

先定义一个java实体对象,如下:

package com.pcitc.json.cnblog;

/**
 * SimInfo实体对象
 *
 * @Description
 * @author admin
 * @created 2015年6月30日 上午10:23:21
 * @version
 * @history
 * @see
 */
public class SimInfo {

    private String addTime;
    private String iccid;
    private int id;
    private String imei;
    private String imsi;
    private String phoneType;
    private String remark;
    private String tel;

    public String getAddTime() {
        return addTime;
    }

    public void setAddTime(String addTime) {
        this.addTime = addTime;
    }

    public String getIccid() {
        return iccid;
    }

    public void setIccid(String iccid) {
        this.iccid = iccid;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getImei() {
        return imei;
    }

    public void setImei(String imei) {
        this.imei = imei;
    }

    public String getImsi() {
        return imsi;
    }

    public void setImsi(String imsi) {
        this.imsi = imsi;
    }

    public String getPhoneType() {
        return phoneType;
    }

    public void setPhoneType(String phoneType) {
        this.phoneType = phoneType;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

}

1. json对象转换为java对象

@Test
    public void jsonToJava() {
        String json = "[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
        // 接收{}对象,此处接收数组对象会有异常
        if (json.indexOf("[") != -1) {
            json = json.replace("[", "");
        }
        if (json.indexOf("]") != -1) {
            json = json.replace("]", "");
        }
        // 把字符串形式的JSON串转换成JSON对象
        JSONObject obj = JSONObject.fromObject(json);
        // 把JSON对象转成java对象
        SimInfo simInfo = (SimInfo) JSONObject.toBean(obj, SimInfo.class);
        // 输出java对象的相关属性
        System.out.println(simInfo.getAddTime());
        System.out.println(simInfo.getIccid());
        System.out.println(simInfo.getImei());
        System.out.println(simInfo.getImsi());
        System.out.println(simInfo.getPhoneType());
        System.out.println(simInfo.getRemark());
        System.out.println(simInfo.getTel());
        System.out.println(simInfo.getId());
    }

输出结果:

2.  将json数组转换为java集合对象

/**
     * 将json数组转换为java集合对象
     *
     * @Description
     * @author admin
     * @created 2015年6月30日 上午10:10:15
     */
    @Test
    public void jsonToJavaCollections() {
        String jsons = "[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"},"
                + "{\"addTime\":\"2011-11-11 14:23:02\",\"iccid\":\"2222\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
        // 把字符串形式的JSON串转换成JSON数组对象
        JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(jsons);
        if (jsonArray != null) {
            // 把JSON数组对象转换成java集合对象
            List<Object> list = (List<Object>) JSONSerializer.toJava(jsonArray);
            for (Object o : list) {
                // 把java对象转换成JSON对象
                JSONObject jsonObject = JSONObject.fromObject(o);
                // 把JSON对象转换成特定的java对象
                SimInfo simInfo = (SimInfo) JSONObject.toBean(jsonObject,
                        new SimInfo().getClass());
                // 输出java对象属性
                System.out.println("addTime: " + simInfo.getAddTime());
            }
        }
    }

输出结果:

3. java对象转换成为JSON对象

/**
     * java对象转换成为JSON对象
     *
     * @Description
     * @author admin
     * @created 2015年6月30日 上午10:31:08
     */
    @Test
    public void javaToJson() {
        SimInfo simInfo = new SimInfo();
        simInfo.setAddTime("2015-06-30");
        simInfo.setIccid("1111");
        simInfo.setImei("2222");
        simInfo.setImsi("3333");
        simInfo.setPhoneType("4");
        simInfo.setRemark("aaaa");
        simInfo.setTel("5555");
        // java对象转换为json数组对象
        JSONArray jsonArray = new JSONArray().fromObject(simInfo);
        // json:
        // [{"addTime":"2011-09-19 14:23:02","iccid":"1111","id":0,"imei":"2222","imsi":"3333","phoneType":"4444","remark":"aaaa","tel":"5555"}]
        System.out.println("json: " + jsonArray.toString());
    }

输出结果:

二. 基于json-lib.jar包Json实例程序的一些总结

1. 把一个JSON字符串转换成JSON对象的两种方式:

String json = "[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
if (json.indexOf("[") != -1) {
            json = json.replace("[", "");
        }
        if (json.indexOf("]") != -1) {
            json = json.replace("]", "");
        }

方式一:

JSONObject obj = JSONObject.fromObject(json);

方式二:

JSONObject obj = (JSONObject) JSONSerializer.toJSON(json);

2. JSONObject to DynaBean

String json = "{name=\"json\",bool:true,int:1,double:2.2}";
JSONObject jsonObject = JSONObject.fromObject(json);
//抽象的写法:DynaBean bean = (DynaBean) JSONSerializer.toJava( jsonObject );
Object bean = JSONObject.toBean(jsonObject);
//Object bean1 = JSONSerializer.toJava(jsonObject);

3. JSONObject to JavaBean

String json = "{name:\"zhangsan\",age:25,hight:1.72,sex:true}";
JSONObject jsonObject = JSONObject.fromObject(json);
UserBean bean = (UserBean) JSONObject.toBean(jsonObject, UserBean.class);

4. JSONArray to List

String json = "[\"first\",\"second\"]";
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);
List output = (List) JSONSerializer.toJava(jsonArray);

5. JSONArray to array

String json = "[\"first\",\"second\"]";
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);
Object[] output = (Object[]) JSONSerializer.toJava(jsonArray, jsonConfig);
时间: 2024-10-17 12:55:12

json学习系列(8)JSON与JAVA数据的相互转换实例的相关文章

Json学习总结(2)——Java 下的 JSON库性能比较:JSON.simple vs. GSON vs. Jackson vs. JSONP

JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考了.我们很少会去想用到的这些JSON库到底有什么不同,但事实上它们的确是不太一样的.因此,我们运行了一个基准测试来对常用的几个JSON库进行了测试,看看在解析不同大小的文件时哪个库的速度是最快的.下面我会把结果分享给大家. JSON通常用于传输及解析大文件.这对运行在Hadoop或者是Spark集群上的数据处理程序而言是个很常见的场景.在给定的文件大小下,你可以

json学习系列(3)-JSONObject的过滤设置

我们通常对一个json串和java对象进行互转时,经常会有选择性的过滤掉一些属性值.例如下面的实体类: package com.pcitc.json; /** * Person实体类 * * @Description * @author admin * @created 2015年6月29日 下午4:08:40 * @version * @history * @see */ public class Person { private String name; private String add

FineBI学习系列之FineBI与HBase数据连接(图文详解)

不多说,直接上干货! 这是来自FineBI官网提供的帮助文档 http://help.finebi.com/http://help.finebi.com/doc-view-584.html 目录: 1.描述 2.操作 3.注意事项 1.描述 Hbase作为大数据平台的重要组成部分,在数据存储方面起到了至关重要的作用,因此BI连接Hbase也是必不可少的功能之一.FineBI提供的方法是通过phoenix连接hbase,下面我们将详细介绍如何进行连接. 2.操作 2.1 配置信息   驱动 URL

Java学习系列(二十四)Java正则表达式详解

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/45501777 前言 正则表达式可以说是用来处理字符串的一把利器,它是一个专门匹配n个字符串的字符串模板,本质是查找和替换.在实例演示之前先了解一下Pattern.Matcher这两个工具类,Pattern:编译好的带匹配的模板(如:Pattern.compile("[a-z]{2}");/ / 取2个小写字母):Matcher:匹配目标字符串后产生的结果(如:pattern.m

JSON与JAVA数据的相互转换

import net.sf.json.JSONArray;   import net.sf.json.JSONException; import net.sf.json.JSONObject;import net.sf.json.JSONSerializer; /** * json对象转换为java对象 * * @throws JSONException */ @Test public void jsonToJava(){ String json="[{\"addTime\"

JSON 与JAVA数据的相互转换

import net.sf.json.JSONArray;import net.sf.json.JSONException;import net.sf.json.JSONObject;import net.sf.json.JSONSerializer; /** * json对象转换为java对象 * * @throws JSONException */ @Test public void jsonToJava(){ String json="[{\"addTime\":\&q

json学习系列(5)-json错误解析net.sf.ezmorph.bean.MorphDynaBean cannot be cast to

最近在使用json的时候,报了下面的错误: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to java.lang.String 这种错误非常常见,因为json转化为javabean的时候,默认为MorphDynaBean类的.如下面的例子: 在json字符串转javabean时,一般的对象,可以直接转,如:一个学生类,属性有姓名.年龄等. public class Student implements java.io.Serializable

json学习系列(1)-使用json所要用到的jar包下载

内容来源于互联网. json是个非常重要的数据结构,在web开发中应用十分广泛.每个开发者都应该好好的去研究一下json的底层实现.在使用json之前首先要明白需要哪些jar文件,初次使用的时候很容易犯错,如果没有加入正确的jar包,会报各种各样的问题.在使用json之前需要准备下面的六个jar 包: commons-lang-1.0.4.jar commons-collections-2.1.jar commons-beanutils-1.8.0.jar json-lib-2.4.jar ez

json学习系列(2)-生成JSONObject的方法

生成JSONObject一般有两种方式,通过javabean或者map类型来生成.如下面的例子: 先定义一个User实体类: package com.pcitc.json; /** * 用户实体类 * * @Description * @author admin * @created 2015年6月29日 下午3:43:15 * @version * @history * @see */ public class User { public String username; public Str