对象转换成JSON字符串的方法

Java代码
  1. import  java.lang.reflect.Field;  
  2. import  java.util.ArrayList;  
  3. import  java.util.HashMap;  
  4.   
  5. /**  
  6. * 提供将对象转换成JSON字符串的方法  
  7.  
  8. * @author Bom Wu  
  9. * @create Mar 13, 2009  
  10. */   
  11. public   class  JSON {  
  12.         /**  
  13.          * 将一个对象转换成JSON字符串表示,该对象应该符合 JavaBean规范。  
  14.          * 如果对象的某个属性不是数字或字符串,该属性将被忽略,不会出现在JSON字符串中  
  15.          *   
  16.          * @param obj  
  17.          *            要转换的对象  
  18.          * @return 描述该对象的JSON字符串,包括属性名与属性值  
  19.          */   
  20.         public   static  String toJSON(Object obj) {  
  21.                 HashMap<String, String> map = new  HashMap<String, String>();  
  22.                 Class c = obj.getClass();  
  23.                 Field[] fields = c.getDeclaredFields();  
  24.                 for  ( int  i =  0 ; i < fields.length; i++) {  
  25.                         String name = fields[i].getName();  
  26.                         try  {  
  27.                                 fields[i].setAccessible(true );  
  28.                                 Object o = fields[i].get(obj);  
  29.                                 if  (o  instanceof  Number) {  
  30.                                         map.put("/""  + name +  "/"" , o.toString());  
  31.                                 } else   if  (o  instanceof  String) {  
  32.                                         map.put("/""  + name +  "/"""/""  + o.toString() +  "/"" );  
  33.                                 }  
  34.                         } catch  (IllegalArgumentException e) {  
  35.                         } catch  (IllegalAccessException e) {  
  36.                         }  
  37.                 }  
  38.                 String s = map.toString();  
  39.                 String str = s.replaceAll("/"=""/":" );  
  40.                 return  str;  
  41.         }  
  42.   
  43.         /**  
  44.          * 将一个对象数组转换成JSON字符串  
  45.          *   
  46.          * @param objs  
  47.          *            要转换的对象数组  
  48.          * @return 转换后得到的字符串  
  49.          */   
  50.         public   static  String toJSON(Object[] objs) {  
  51.                 String[] strs = new  String[objs.length];  
  52.                 for  ( int  i =  0 ; i < objs.length; i++) {  
  53.                         strs[i] = toJSON(objs[i]);  
  54.                 }  
  55.                 return  toJSONArray(strs);  
  56.         }  
  57.   
  58.         /**  
  59.          * 将多个JSON字符串转换成一个JSON字符串,并加入一个标识长度的属性length  
  60.          *   
  61.          * @param strs  
  62.          *            要转换的多个JSON字符串  
  63.          * @return 完整的一个JSON字符串  
  64.          */   
  65.         public   static  String toJSONArray(String[] strs) {  
  66.                 StringBuffer sb = new  StringBuffer();  
  67.                 sb.append("{" );  
  68.                 for  ( int  i =  0 ; i < strs.length; i++) {  
  69.                         sb.append("/"" );  
  70.                         sb.append(i);  
  71.                         sb.append("/":" );  
  72.                         sb.append(strs[i]);  
  73.                         sb.append("," );  
  74.                 }  
  75.                 sb.append("/"length/":" );  
  76.                 sb.append(strs.length);  
  77.                 sb.append("}" );  
  78.                 return  sb.toString();  
  79.         }  
  80.   
  81.         /**  
  82.          * 测试  
  83.          *   
  84.          * @param args  
  85.          */   
  86.         @SuppressWarnings ( "unchecked" )  
  87.         public   static   void  main(String[] args) {  
  88.                 User user = new  User();  
  89.                 user.setId("1234" );  
  90.                 user.setName("hahaha" );  
  91.                 user.setAge(21 );  
  92.   
  93.                 User user1 = new  User();  
  94.                 user1.setId("5767" );  
  95.                 user1.setName("hehehe" );  
  96.                 user1.setAge(18 );  
  97.   
  98.                 ArrayList list = new  ArrayList();  
  99.                 list.add(user);  
  100.                 list.add(user1);  
  101.                 // System.out.println(JSON.toJSON(user));   
  102.                 System.out.println(JSON.toJSON(list.toArray()));  
  103.         }  
  104. }  
  105.   
  106. /**  
  107. * 用来测试的类  
  108.  
  109. * @author Bom Wu  
  110. * @create Mar 13, 2009  
  111. */   
  112. class  User {  
  113.         private  String name;  
  114.         private  String id;  
  115.         private   int  age;  
  116.         public   int  getAge() {  
  117.                 return  age;  
  118.         }  
  119.         public   void  setAge( int  age) {  
  120.                 this .age = age;  
  121.         }  
  122.         public  String getId() {  
  123.                 return  id;  
  124.         }  
  125.         public   void  setId(String id) {  
  126.                 this .id = id;  
  127.         }  
  128.         public  String getName() {  
  129.                 return  name;  
  130.         }  
  131.         public   void  setName(String name) {  
  132.                 this .name = name;  
  133.         }  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值