不想用第三方的自己写个简单的javaBean转json的公共函数库好了

解决方案 »

  1.   

    在你需要转的javaBean里面重写toString方法行不?试着在这个方法里面返回Json格式的字符串?
      

  2.   

    有木有牛牛来讲下具体怎么把java对象和list<javabean>拼接成json啊
      

  3.   

    不复杂吧。无非就是拼接Json格式的字符串,你通过循环指定对象属性为key,对象的值为value就行了啊,以前做EasyUI的时候拼过简单的栗子,给你参考一下看看:String json = "{\"total\":" + counts + ",\"rows\":[";
    for (Object[] obj : clients) {
    json += "{\"clientId\":\"" + obj[0] + "\",\"clientName\":\""
    + obj[1] + "\",\"clientType\":\"" + obj[2]
    + "\",\"clientTel\":\"" + obj[3]
    + "\",\"clientAddress\":\"" + obj[4]
    + "\",\"clientMan\":\"" + obj[5]
    + "\",\"clientEmail\":\"" + obj[6]
    + "\",\"clientComment\":\"" + obj[7] + "\"},";
    }
    String finalJson = json.substring(0, json.length() - 1) + "]}";
      

  4.   

    不复杂吧。无非就是拼接Json格式的字符串,你通过循环指定对象属性为key,对象的值为value就行了啊,以前做EasyUI的时候拼过简单的栗子,给你参考一下看看:String json = "{\"total\":" + counts + ",\"rows\":[";
    for (Object[] obj : clients) {
    json += "{\"clientId\":\"" + obj[0] + "\",\"clientName\":\""
    + obj[1] + "\",\"clientType\":\"" + obj[2]
    + "\",\"clientTel\":\"" + obj[3]
    + "\",\"clientAddress\":\"" + obj[4]
    + "\",\"clientMan\":\"" + obj[5]
    + "\",\"clientEmail\":\"" + obj[6]
    + "\",\"clientComment\":\"" + obj[7] + "\"},";
    }
    String finalJson = json.substring(0, json.length() - 1) + "]}";
    就是这个样子。和我想的一样
      

  5.   

    字符串拼接 
    String jsonString="{\"user\":{\"id\":\"123\",\"name\":\"JSONServlet\",\"say\":\"Hello , i am a servlet !\",\"password\":\"JSON\"},\"success\":true}";
      

  6.   

    自己利用json的特点对象的{key:value},数组的[]包裹起来,利用这一特点自己写个简单的对象转json字符串import java.beans.BeanInfo;
    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Array;
    import java.lang.reflect.Method;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Set;import com.entity.Person;
    import com.entity.User;
    public class JsonUtils {
    public static String toJsonString(Object obj) throws Exception{
    if(obj==null)//没有值的时候直接返回null
    return null;
    Class<?> clazz=obj.getClass();
    if(clazz==String.class||clazz==Character.class||clazz==char.class)//字符或字符串的都用“”包裹返回
    return "\""+obj+"\"";
              if(clazz==int.class||clazz==long.class||clazz==float.class||clazz==double.class||
                   Number.class.isAssignableFrom(clazz) ||clazz==boolean.class||clazz==Boolean.class)//数字的直接返回
    return obj.toString();
    if(clazz.isArray()||Collection.class.isAssignableFrom(clazz))//数组或集合的转换
    return arrayToJson(obj);
    if(Map.class.isAssignableFrom(clazz))//Map的转换
    return mapToJson((Map)obj);
    return objectToJson(obj);//对象的转换
    }
    //对象的转换用{}包起来,利用反射对象所有属性进行json输出
    private static String objectToJson(Object obj) throws Exception{
      StringBuilder sb=new StringBuilder();
          Class<?> cls=obj.getClass();
      BeanInfo beanInfo=Introspector.getBeanInfo(cls, Object.class);
      PropertyDescriptor[] pds=beanInfo.getPropertyDescriptors();
      sb.append("{");
      for(int i=0;i<pds.length;i++){
     PropertyDescriptor pd=pds[i];
    String key=pd.getName();
    Method method=pd.getReadMethod();
    Object value=method.invoke(obj);
    //递归调用toJsonString用于处理值可能又是对象或者map或者数组
    sb.append(key).append(":").append(toJsonString(value));
    if(i!=pds.length-1)
    sb.append(",");
    }
    sb.append("}");
    return sb.toString();
    }
    //数组转json用[]包起来
    private static String arrayToJson(Object obj) throws Exception{
    StringBuilder sb=new StringBuilder();
    sb.append("[");
    Class<?> cls=obj.getClass();
    int len=0,i=0;
    //数组的利用Array的api取数组各元素的值,同样递归调用toJsonString以便处理又是对象或者数组或者map
    if(cls.isArray()){
    len=Array.getLength(obj);
    for(;i<len;i++){
    Object value=Array.get(obj, i);
    sb.append(toJsonString(value));
    if(i!=len-1)
    sb.append(",");
    }
    }else if(Collection.class.isAssignableFrom(cls)){
    //集合的利用Iterator的api取数组各元素的值,同样递归调用toJsonString以便处理又是对象或者数组或者map
    Collection col=(Collection)obj;
    Iterator it=col.iterator();
    len=col.size();
    for(;i<len;i++){
    Object value=it.next();
    sb.append(toJsonString(value));
    if(i!=len-1)
    sb.append(",");
    }
    }
    sb.append("]");
    return sb.toString();
    }
    //map转json和对象转json类似,只是不用反射,用map的key和value生成
    private static String mapToJson(Map map) throws Exception{
    StringBuilder sb=new StringBuilder();
    sb.append("{");
    Set keys=map.keySet();
    Iterator it=keys.iterator();
    int len=keys.size();
    for(int i=0;i<len;i++){
    Object key=it.next();
    Object value=map.get(key);
    sb.append(toJsonString(key)).append(":").append(toJsonString(value));
    if(i!=len-1)
    sb.append(",");
    }
    sb.append("}");
    return sb.toString();
    }
    }测试public class User{
       private Integer id;
       private String name;
       private Address address;
       set,get
    }
    public class Address{
       private String address;
       set,get
    }
    public static void main(String[] args) throws Exception{
         User user=new User();
         user.setId(1);
         user.setName(2);
         String json=JsonUtils.toJsonString();
         System.out.println("单一对象----------"+json);
         Address address=new Address();
         address.setAddress("测试地址");
         user.setAddress(address);
         json=JsonUtils.toJsonString();
         System.out.println("符合对象----------"+json);
         List<User> list=new ArrayList<User>();
          json=JsonUtils.toJsonString();
         System.out.println("集合对象----------"+json);
    }
      

  7.   

    其实...我想知道的是为什么不用json的包而去自己写一个...
    你写的和json的包也没什么区别...本来转json的逻辑就不复杂