zoukankan      html  css  js  c++  java
  • 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":"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);
        }
     
    

      

          jar包 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 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);
    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 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);
    System.out.println(jsonObject);
    

     理论上,这样就可以了,但时,有异常Caused by: java.lang.NoSuchMethodException: com.json.Json$UserBean.<init>()

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

      4.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);
    Object[] expected = new Object[] { "first", "second" };
    ArrayAssertions.assertEquals(expected, output);
                       
    

     5.JSON 字符串 专为 JavaBean

    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());
    

      

     
  • 相关阅读:
    LUA之面向对象
    LUA笔记之表
    LUA笔记之字符串
    STM32模拟I2C
    php(1)-php5.6启动命令
    ip地址变更对tomcat和nginx的影响
    解决 nginx: [alert] kill(189, 1) failed (3: No such process)
    linux(16)-yum安装提示“没有可用软件包”
    性能测试监控分析(17) 负载和CPU使用率低高负载的原因
    Codeforces Round #588 (Div. 2)C(思维,暴力)
  • 原文地址:https://www.cnblogs.com/dreammyone/p/6994710.html
Copyright © 2011-2022 走看看