2009-03-17 16:52 import java.lang.reflect.Field;import java.util.ArrayList;import java.util.HashMap;/*** 提供将对象转换成JSON字符串的方法* * @author Bom Wu* @create Mar 13, 2009*/public class JSON {/** * 将一个对象转换成JSON字符串表示,该对象应该符合 JavaBean规范。 * 如果对象的某个属性不是数字或字符串,该属性将被忽略,不会出现在JSON字符串中 * * @param obj * 要转换的对象 * @return 描述该对象的JSON字符串,包括属性名与属性值 */public static String toJSON(Object obj) {HashMap<String, String> map = new HashMap<String, String>();Class c = obj.getClass();Field[] fields = c.getDeclaredFields();for (int i = 0; i < fields.length; i++) {String name = fields[i].getName();try {fields[i].setAccessible(true);Object o = fields[i].get(obj);if (o instanceof Number) {map.put("/"" + name + "/"", o.toString());} else if (o instanceof String) {map.put("/"" + name + "/"", "/"" + o.toString() + "/"");}} catch (IllegalArgumentException e) {} catch (IllegalAccessException e) {}}String s = map.toString();String str = s.replaceAll("/"=", "/":");return str;}/** * 将一个对象数组转换成JSON字符串 * * @param objs * 要转换的对象数组 * @return 转换后得到的字符串 */public static String toJSON(Object[] objs) {String[] strs = new String[objs.length];for (int i = 0; i < objs.length; i++) {strs[i] = toJSON(objs[i]);}return toJSONArray(strs);}/** * 将多个JSON字符串转换成一个JSON字符串,并加入一个标识长度的属性length * * @param strs * 要转换的多个JSON字符串 * @return 完整的一个JSON字符串 */public static String toJSONArray(String[] strs) {StringBuffer sb = new StringBuffer();sb.append("{");for (int i = 0; i < strs.length; i++) {sb.append("/"");sb.append(i);sb.append("/":");sb.append(strs[i]);sb.append(",");}sb.append("/"length/":");sb.append(strs.length);sb.append("}");return sb.toString();}/** * 测试 * * @param args */@SuppressWarnings("unchecked")public static void main(String[] args) {User user = new User();user.setId("1234");user.setName("hahaha");user.setAge(21);User user1 = new User();user1.setId("5767");user1.setName("hehehe");user1.setAge(18);ArrayList list = new ArrayList();list.add(user);list.add(user1);// System.out.println(JSON.toJSON(user));System.out.println(JSON.toJSON(list.toArray()));}}/*** 用来测试的类* * @author Bom Wu* @create Mar 13, 2009*/class User {private String name;private String id;private int age;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}