JSON与JAVA数据的相互转换

来源:互联网 发布:杭州淘宝培训哪家好 编辑:程序博客网 时间:2024/05/06 10:37
复制代码
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\":\"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=new JSONObject().fromObject(json);        SimInfo simInfo=(SimInfo)JSONObject.toBean(obj, SimInfo.class);        System.out.println("obj: "+simInfo);        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());                DaoFactory.getSimInfoDao().add(simInfo);    }    /**     * 将json转换为java集合对象     */    @Test    public void jsonToJavas(){        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\"}]";        List<SimInfo> simInfos = getJavaCollection(new SimInfo(),jsons);        System.out.println(simInfos.size());        for(SimInfo simInfo:simInfos){            System.out.println("addTime: "+simInfo.getAddTime());            System.out.println("=========");        }            }    /**     * 封装将json对象转换为java集合对象     *      * @param <T>     * @param clazz     * @param jsons      * @return     */    private <T> List<T> getJavaCollection(T clazz, String jsons) {        List<T> objs=null;        JSONArray jsonArray=(JSONArray)JSONSerializer.toJSON(jsons);        if(jsonArray!=null){            objs=new ArrayList<T>();            List list=(List)JSONSerializer.toJava(jsonArray);            for(Object o:list){                JSONObject jsonObject=JSONObject.fromObject(o);                T obj=(T)JSONObject.toBean(jsonObject, clazz.getClass());                objs.add(obj);            }        }        return objs;    }        /**     * java对象转换为json对象     *      * @throws JSONException     */    @Test    public void javaToJson(){        SimInfo simInfo=new SimInfo();        simInfo.setAddTime(UtilTool.dateToStr(new Date(), null));        simInfo.setIccid("1111");        simInfo.setImei("2222");        simInfo.setImsi("3333");        simInfo.setPhoneType(4);        simInfo.setRemark("aaaa");        simInfo.setTel("5555");        //java对象转换为json对象        String json=new JSONArray().fromObject(simInfo).toString();        //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: "+json);    }
复制代码


         

jackson-core-asl-1.7.2.jar   

jackson-mapper-asl-1.7.2.jar

            //将一个Java对象转换成JSON            StringWriter writer = new StringWriter();            ObjectMapper mapper = new ObjectMapper();            mapper.writeValue(writer, simInfo);            String json=writer.toString();

           

           

复制代码
基于json-lib.jar包Json实例程序1.JSONObject to DynaBeanString 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);assertEquals(jsonObject.get("name"), PropertyUtils.getProperty(bean, "name"));assertEquals(jsonObject.get("bool"), PropertyUtils.getProperty(bean, "bool"));assertEquals(jsonObject.get("int"), PropertyUtils.getProperty(bean, "int"));assertEquals(jsonObject.get("double"), PropertyUtils.getProperty(bean, "double"));             
2.JSONObject to JavaBeanString json = "{name:\"zhangsan\",age:25,hight:1.72,sex:true}";JSONObject jsonObject = JSONObject.fromObject(json);UserBean bean = (UserBean) JSONObject.toBean(jsonObject, UserBean.class);System.out.println(jsonObject);理论上,这样就可以了,但时,有异常Caused by: java.lang.NoSuchMethodException: com.json.Json$UserBean.<init>()
             3.JSONArray to ListString json = "[\"first\",\"second\"]";JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);List output = (List) JSONSerializer.toJava(jsonArray);     4.JSONArray to arrayString 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);Object[] expected = new Object[] { "first", "second" };ArrayAssertions.assertEquals(expected, output);                   
5.JSON 字符串 专为 JavaBean(刘慧斌demo 演示需要的jar包在附件里)String str="[{\"id\":\"328\",\"mestype\":\"inbox\"},{\"id\":\"327\",\"mestype\":\"inbox\"},{\"id\":\"279\",\"mestype\":\"already\"},{\"id\":\"278\",\"mestype\":\"already\"},{\"id\":\"277\",\"mestype\":\"already\"},{\"id\":\"310\",\"mestype\":\"inbox\"},{\"id\":\"308\",\"mestype\":\"inbox\"},{\"id\":\"305\",\"mestype\":\"inbox\"},{\"id\":\"304\",\"mestype\":\"inbox\"},{\"id\":\"303\",\"mestype\":\"inbox\"}]";  JSONArray  jsonArray=(JSONArray) JSONSerializer.toJSON(str);  List list=(List)JSONSerializer.toJava(jsonArray);        for (Object  obj: list) {         JSONObject jsonObject = JSONObject.fromObject(obj);      MessageBean bean = (MessageBean) JSONObject.toBean(jsonObject, MessageBean.class);   String id=bean.getId()+"";   String type=bean.getMestype();   System.out.println(id+" "+type);  }  System.out.println(list.size());
复制代码
0 0
原创粉丝点击