天天看点

任意数据转换成json格式数据

package com.hdxinfo.util;

import java.beans.IntrospectionException;

import java.beans.Introspector;

import java.beans.PropertyDescriptor;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import java.util.Set;

import com.hdxinfo.bean.IndexBean;

public class jsonUtils {

 public static String stringToJson(String str){

  if(str==null){

   return nullToJson(); 

  }

 StringBuilder sb = new StringBuilder();

 for(int i=0;i < str.length();i++){

  char ch = str.charAt(i);

  switch(ch){

  case '"':

   sb.append("///''");

   break;

  case '/' :

   sb.append("");

   break;

  case '\b':

   sb.append("//b");

   break;

  case '\f':

   sb.append("//f");

   break;

  case '\n':

   sb.append("//n");

   break;

  case '\r': 

   sb.append("//r");

   break;

  case '\t':

   sb.append("//t");

   break;

  default:

   if(ch >='\u0000' && ch<='\u001f'){

    String ss = Integer.toHexString(ch);

    sb.append("//u");

    for(int k=0;k<4-ss.length();k++){

     sb.append('0');

    }

    sb.append(ss.toUpperCase());

   }else{

    sb.append(ch);

   }

  }

 }

 return sb.toString();

 }

 public static String nullToJson(){

  return "";

 }

 public static String objectToJson(Object obj){

  StringBuilder json = new StringBuilder();

  if(null==obj){

   json.append("//");

  }else if(obj instanceof Number){

   json.append(numberToJson((Number)obj));

  }else if(obj instanceof Boolean){

   json.append(booleanToJson((Boolean)obj));

  }else if(obj instanceof String){

   json.append("/").append(stringToJson((String)obj)).append("/");

  }else if(obj instanceof Object[]){

   json.append(arrayToJson((Object[])obj));

  }else if(obj instanceof List){

      json.append(listToJson((List<?>)obj)); 

  }else if(obj instanceof Map){

   json.append(mapToJson((Map<?,?>)obj));

  }else if(obj instanceof Set){

   json.append(setToJson((Set<?>)obj));

  }else {

   json.append(beanToJson(obj));

  }

  return json.toString();

 }

 public static String numberToJson(Number number){

  return number.toString();

 }

 public static String booleanToJson(Boolean bool){

  return bool.toString();

 }

 public static String beanToJson(Object bean){

  StringBuilder json = new StringBuilder();

  json.append("{");

  PropertyDescriptor[] props = null;

  try{

   props = Introspector.getBeanInfo(bean.getClass(),Object.class).getPropertyDescriptors();

  }catch(IntrospectionException e){}

  if(props!=null){

   for(int i=0;i<props.length;i++){

    try{

    String name = objectToJson(props[i].getName());

    String value = objectToJson(props[i].getReadMethod().invoke(bean));

    json.append(name);

    json.append(":");

    json.append(value);

    json.append(",");

    }catch(Exception e){}

   }

   json.setCharAt(json.length() - 1, '}');

  }else{

   json.append("}");

  }

  return json.toString();

 }

 public static String listToJson(List<?> list){

  StringBuilder json = new StringBuilder();

  json.append("[");

  if(list !=null && list.size() > 0){

   for(Object obj:list){

    json.append(objectToJson(obj));

    json.append(",");

   }

   json.setCharAt(json.length() - 1, ']');

  }else{

   json.append("]");

  }

  return json.toString();

 }

   public static String arrayToJson(Object[] array){

    StringBuilder json = new StringBuilder();

    json.append("[");

    if(array!=null && array.length > 0){

     for(Object obj:array){

      json.append(objectToJson(obj));

      json.append(",");

     }

     json.setCharAt(json.length() - 1, ']');

    }else{

     json.append("]");

    }

    return json.toString();

   }

   public static String mapToJson(Map<?,?> map){

    StringBuilder json = new StringBuilder();

    json.append("{");

    if(map!=null && map.size() > 0){

     for(Object key:map.keySet()){

      json.append(objectToJson(key));

      json.append(":");

      json.append(objectToJson(map.get(key)));

      json.append(",");

     }

     json.setCharAt(json.length() - 1,'}');

    }else{

     json.append("}");

    }

    return  json.toString();

   }

   public static String setToJson(Set<?> set){

    StringBuilder  json = new  StringBuilder();

    json.append("[");

    if(set!=null && set.size() >0){

     for(Object obj:set){

      json.append(objectToJson(obj));

      json.append(":");     

     }

     json.setCharAt(json.length() - 1, ']');

    }else{

     json.append("]");

    }

    return json.toString();

   }

   //main测试方法

   public static void main(String[] args){

    List<IndexBean> le = new  ArrayList<IndexBean>();

    for(int i = 0; i <5 ;i++){

    IndexBean ib = new IndexBean();

    ib.setCounts("33 "+i);

    ib.setLaunchdate("2011-01-10");

    ib.setOwncity("北京");

    ib.setSourcesfrom("北京招标网");

    ib.setSourcesurl("www.baidu.com");

    le.add(ib);

    }

  //  String newstr = jsonUtils.beanToJson(ib);

    String newstr = jsonUtils.listToJson(le);

    System.out.println(newstr.replace("/", ""));

   }

}