by alex
目的,根据类的annotation,将一个对象转化为字段为annotation指定name的json字符串。
JSONBuilder builder = new JSONBuilder(response.getWriter()); builder.array(); for (Object stat : stats) { boolean flag = stat.getClass().isAnnotationPresent(Table.class); String name = stat.getClass().getSimpleName(); if (flag) { Table table = (Table) stat.getClass().getAnnotation(Table.class); name = table.name(); } builder.object(); builder.key(name); builder.object(); Method[] methods = stat.getClass().getMethods(); for (Method method : methods) { if (!"id".equals(method.getName()) && method.getName().startsWith("get")) { boolean isAnno = method.isAnnotationPresent(Column.class); String columnName = method.getName(); if (isAnno) { Column c = method.getAnnotation(Column.class); columnName = c.name(); } Object result = method.invoke(stat); if (result instanceof Date) { result = new Long(((Date)result).getTime() / 1000); } if (result instanceof Double && Double.isNaN((Double)result)) { result = new Double(0d); } builder.key(columnName).value(result); } } builder.endObject(); builder.endObject(); } builder.endArray(); response.getWriter().close();