为实体类增加toJSON方法

后期子类继承该基础类即可。

public class BaseEntity implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = -5311594725961174392L;

    @Override
    public String toString() {
        try {
            return toJSON();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }

    public String toJSON() throws IllegalArgumentException, IllegalAccessException {
        StringBuilder jsonBuff = new StringBuilder();
        jsonBuff.append("{");
        Field[] fields = this.getClass().getDeclaredFields();
        for (Field item : fields) {
            item.setAccessible(true);
            String name = item.getName();
            jsonBuff.append("\"" + name + "\"" + ":");
            Object value = item.get(this);
            if (value != null) {
                Class<?> type = item.getType();
                if (type.equals(String.class)) {
                    jsonBuff.append("\"" + value + "\"");
                } else if (type.equals(int.class) || type.equals(Integer.class)) {
                    jsonBuff.append(item.getInt(this));
                } else if (type.equals(short.class) || type.equals(Short.class)) {
                    jsonBuff.append(item.getShort(this));
                } else if (type.equals(long.class) || type.equals(Long.class)) {
                    jsonBuff.append(item.getLong(this));
                } else if (type.equals(float.class) || type.equals(Float.class)) {
                    jsonBuff.append(item.getFloat(this));
                } else if (type.equals(double.class) || type.equals(Double.class)) {
                    jsonBuff.append(item.getDouble(this));
                } else if (type.equals(char.class)) {
                    jsonBuff.append(item.getChar(this));
                } else if (type.equals(boolean.class)) {
                    jsonBuff.append(item.getBoolean(this));
                } else if (type.equals(Map.class)) {
                    jsonBuff.append(mapToString((Map)value));
                } else if (type.equals(List.class)) {
                    jsonBuff.append(listToString((List)value));
                } else if (type.getSuperclass().equals(BaseEntity.class)) {
                    jsonBuff.append(((BaseEntity)value).toJSON());
                }
            }
            jsonBuff.append(", ");
        }
        return jsonBuff.substring(0, jsonBuff.length() - 2) + "}";
    }

    public String mapToString(Map<String, ? extends Object> map) {
        StringBuilder buff = new StringBuilder();
        Iterator<String> iter = map.keySet().iterator();
        buff.append("{");
        while (iter.hasNext()) {
            String name = iter.next();
            Object value = map.get(name);
            buff.append("\"" + name + "\"" + ":");
            if (value != null) {
                String valueStr = String.valueOf(value);
                if (value.getClass().equals(String.class)) {
                    buff.append("\"" + valueStr + "\"");
                } else {
                    buff.append(valueStr);
                }
            }
            buff.append(", ");
        }
        return buff.substring(0, buff.length() - 2) + "}";
    }

    public String listToString(List<? extends Object> list) {
        StringBuilder buff = new StringBuilder();
        buff.append("[");
        for (Object value : list) {
            String valueStr = String.valueOf(value);
            if (value.getClass().equals(String.class)) {
                buff.append("\"" + valueStr + "\"");
            } else {
                buff.append(valueStr);
            }
            buff.append(", ");
        }
        return buff.substring(0, buff.length() - 2) + "]";
    }
}
时间: 2024-11-08 19:49:18

为实体类增加toJSON方法的相关文章

SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-010-Introduction为类增加新方法

一. 1.Introduction的作用是给类动态的增加方法 When Spring discovers a bean annotated with @Aspect , it will automatically create a proxy that delegates calls to either the proxied bean or to the introduction implementation, depending on whether the method called be

mootools1.5.1使用笔记:类的创建,继承,为现有类增加新方法

1 window.addEvent('domready',function(){ 2 /* 3 新建一个Person的类,类上有 name属性和sayHello方法: 4 */ 5 var Person= new Class({ 6 initialize: function(name){ 7 this.name = name; 8 }, 9 sayHello:function(){ 10 console.log('hello,my name is '+this.name); 11 } 12 13

关于 MyEclipse从数据库反向生成实体类 出错 解决方法

错误如图 我解决的方法是把项目src下面的 hibernate.cfg.xml  文件删除了 重新生成,生成步骤如下: 在项目上点击右键,选择MyEclipse-->add Hibernate Capabilities 然后下一步选中一个目录存放自动生成hibernate.cfg.xml文件,一般毫无例外的放在src根目录下,下一步选中我们第一步建立的那个数据库 对象,然后下一步选中一个目录存放自动生成的HibernateSessionFactory工具类,这个 hibernateSession

【技术】JavaSE环境下JPA实体类自动注册

在没有容器支持的环境下,JPA的实体类(Entity)一般要在persistence.xml中逐个注册,类似下面这样: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w

MyBatis实体类属性与表字段不一致的4种解决方案

pom的依赖配置: 1 <dependencies> 2 <dependency> 3 <groupId>org.mybatis</groupId> 4 <artifactId>mybatis</artifactId> 5 <version>3.4.5</version> 6 </dependency> 7 <dependency> 8 <groupId>junit</

领域模型中的实体类分为四种类型:VO、DTO、DO、PO

http://kb.cnblogs.com/page/522348/ 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念: 概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来. DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布

java 项目中几种O实体类的概念

经常会接触到vo,do,dto的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析. 得出的主要结论是:在项目应用中,vo对应于页面上需要显示的数据(表单),do对应于数据库中存储的数据(数据表),dto对应于除二者之外需要进行传递的数据. 一.实体类 百度百科中对于实体类的定义如下: 实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关. 根据以上定义,我们可以了解到,实体类有两方面内容,存储

转:领域模型中的实体类分为四种类型:VO、DTO、DO、PO

经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析.得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应于除二者之外需要进行传递的数据.一.实体类百度百科中对于实体类的定义如下:实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关.根据以上定义,我们可以了解到,实体类有两方面内容,存储数据和执行

Spring在Action中不用注入实体类

在Action类中用到了各种Service提供的服务则需要在spring的配置文件中注入Service的bean,如果使用Setter方法注入需要在Action中添加Service的Setter方法,但是用到的实体类是不需要注入的,所以一定注意不要添加实体类的Setter方法,否则会在访问Action类的时候报错. 原文地址:https://www.cnblogs.com/superyucong/p/12248599.html