json工具类放送

/**
   * @Title: jsonForMap
   * @Description: jsonForMap LH
   */
   public static Map<String, String> jsonForMap(String jsonStr) {
      if(StringHelper.isEmpty(jsonStr)){
         return null;
      }
      JSONObject jsonObject = JSONObject.fromObject(jsonStr);
      Map<String, String> result = new HashMap<String, String>();
      Iterator<String> iterator = jsonObject.keys();
      String key = null;
      String value = null;
      while (iterator.hasNext()) {
         key = (String) iterator.next();
         value = jsonObject.getString(key);
         result.put(key, value);

      }
      return result;
   }

    public static List<Map<String, Object>> parseJSON2List(String jsonStr){
           JSONArray jsonArr = JSONArray.fromObject(jsonStr);
           List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
           Iterator<JSONObject> it = jsonArr.iterator();
           while(it.hasNext()){
               JSONObject json2 = it.next();
               list.add(parseJSON2Map(json2.toString()));
           }
           return list;
       }


       public static Map<String, Object> parseJSON2Map(String jsonStr){
           Map<String, Object> map = new HashMap<String, Object>();
           //最外层解析
           JSONObject json = JSONObject.fromObject(jsonStr);
           for(Object k : json.keySet()){
               Object v = json.get(k);
               //如果内层还是数组的话,继续解析
               if(v instanceof JSONArray){
                   List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
                   Iterator<JSONObject> it = ((JSONArray)v).iterator();
                   while(it.hasNext()){
                       JSONObject json2 = it.next();
                       list.add(parseJSON2Map(json2.toString()));
                   }
                   map.put(k.toString(), list);
               } else {
                   map.put(k.toString(), v);
               }
           }
           return map;
       }


       public static List<Map<String, Object>> getListByUrl(String url){
           try {
               //通过HTTP获取JSON数据
               InputStream in = new URL(url).openStream();
               BufferedReader reader = new BufferedReader(new InputStreamReader(in));
               StringBuilder sb = new StringBuilder();
               String line;
               while((line=reader.readLine())!=null){
                   sb.append(line);
               }
               return parseJSON2List(sb.toString());
           } catch (Exception e) {
               e.printStackTrace();
           }
           return null;
       }


       public static Map<String, Object> getMapByUrl(String url){
           try {
               //通过HTTP获取JSON数据
               InputStream in = new URL(url).openStream();
               BufferedReader reader = new BufferedReader(new InputStreamReader(in));
               StringBuilder sb = new StringBuilder();
               String line;
               while((line=reader.readLine())!=null){
                   sb.append(line);
               }
               return parseJSON2Map(sb.toString());
           } catch (Exception e) {
               e.printStackTrace();
           }
           return null;
       }
       @SuppressWarnings({ "deprecation"})
       public static Object fromJsonToJava(JSONObject json,Class<?> pojo) throws Exception{
           // 首先得到pojo所定义的字段
           Field [] fields = pojo.getDeclaredFields();
           // 根据传入的Class动态生成pojo对象
           Object obj = pojo.newInstance();
           for(Field field: fields){
               // 设置字段可访问(必须,否则报错)
               field.setAccessible(true);
               // 得到字段的属性名
               String name = field.getName();
               // 这一段的作用是如果字段在JSONObject中不存在会抛出异常,如果出异常,则跳过。
               try{
                       json.get(name);
               }catch(Exception ex){
                   continue;
               }
               if(json.get(name) != null && !"".equals(json.getString(name).trim()) && !"null".equals(json.getString(name).trim().toLowerCase()) ){
                   // 根据字段的类型将值转化为相应的类型,并设置到生成的对象中。
                   if(field.getType().equals(Long.class) || field.getType().equals(long.class)){
                       field.set(obj, Long.parseLong(json.getString(name)));
                   }else if(field.getType().equals(String.class)){
                       field.set(obj, json.getString(name));
                   } else if(field.getType().equals(Float.class) || field.getType().equals(float.class)){
                       field.set(obj, Float.parseFloat(json.getString(name)));
                   } else if(field.getType().equals(Double.class) || field.getType().equals(double.class)){
                       field.set(obj, Double.parseDouble(json.getString(name)));
                   } else if(field.getType().equals(Integer.class) || field.getType().equals(int.class)){
                       field.set(obj, Integer.parseInt(json.getString(name)));
                   } else if(field.getType().equals(java.util.Date.class)){
                       field.set(obj, DateUtils.parse(json.getString(name).replace("T", " "),"yyyy-MM-dd HH:mm:ss"));
                   } else if(field.getType().equals(java.math.BigDecimal.class)){
                       field.set(obj, new BigDecimal(json.getString(name)));
                   }else{
                       continue;
                   }
               }
           }
           return obj;
       }

       //test
       public static void main(String[] args) {
//         String url = "http://...";
//         List<Map<String,Object>> list = getListByUrl(url);

         List<BusPlan>  list = new ArrayList<BusPlan>();

         BusPlan one =  new BusPlan();
         one.setStrationId("1");
         one.setStartTime("2018-04-01");
         one.setEndTime("2018-10-01");
         one.setRouteId("1");
         list.add(one);


         String str =  listToJson(list);
         System.out.println("-----");
         System.out.println(str);


          List<BusPlan> list1 =  JsonTools.jsonToList(str,BusPlan.class);
         System.out.println(list1);


      }




   /**
    * List<T> 转 json 保存到数据库
    */
   public static <T> String listToJson(List<T> ts) {
      String jsons = JSON.toJSONString(ts);
      return jsons;
   }

   /**
    * json 转 List<T>
    */
   public static <T> List<T> jsonToList(String jsonString, Class<T> clazz) {
      @SuppressWarnings("unchecked")
      List<T> ts = (List<T>) com.alibaba.fastjson.JSONArray.parseArray(jsonString, clazz);
      return ts;
   }

猜你喜欢

转载自blog.csdn.net/weixin_33207551/article/details/85759020
今日推荐