`
xiangxingchina
  • 浏览: 508657 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对象转换器 扩展中

阅读更多

/**
 * @author luxiangxing
 * @time   2010-8-28
 * @email  xiangxingchina@163.com
 * @tel    13488766519
 */
package teasoft.common.util;

import java.lang.reflect.Field;
import java.util.HashMap;

import teasoft.user.entity.User;

public class TypeConverterUtil {
             /**
              * 将一个对象转换成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;  
             }  
             
             /**
              * 将一个对象转换成HashMap,该对象应该符合 JavaBean规范。
              * @param obj
              *            要转换的对象
              * @return 描述该对象的hashMap,包括属性名与属性值
              */  
             public static HashMap toHashMap(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!=null && o instanceof Number) {  
                                             map.put( name , o.toString());  
                                     } else if (o!=null && o instanceof String) {  
                                             map.put( name ,  o.toString() );  
                                     }  
                             } catch (IllegalArgumentException e) {  
                             } catch (IllegalAccessException e) {  
                             }  
                     }  
                   return map;
             }  
       
             public static void main(String[] args) {
                User user = new User();
                user.setId(1);
                user.setUserName("lxx");
                HashMap hm = TypeConverterUtil.toHashMap(user);
                System.out.println(hm.get("id"));
                System.out.println(hm.get("userName"));
                System.out.println(hm.get("password"));
             }
}

分享到:
评论

相关推荐

    agile-mybatis : Mybatis扩展

    结果POJO映射 查询返回结果可以直接声明为POJO或POJO集合,其映射过程是依赖于cloud.agileframework:common-util对象深度转换器实现,所以支持 识别驼峰与下划线等风格属性的互转。只需声明,无需额外调用,以最低的...

    necromancer:使用一些黑魔法从一种对象类型转换为另一种对象类型

    能够指定自己的转换器 能够从更简单的转换中组合转换 支持自定义类型的转换 能够指定严格的转换模式 安装 将此行添加到应用程序的 Gemfile 中: gem "necromancer" 然后执行: $ bundle 或者自己安装: $ ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     18.4.5 查询结果转换器  18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2...

    【05-面向对象(下)】

    抽象类里可以包含构造器,抽象类里的构造器并不是用于创建对象,而让其子类调用这些构 造器来完成属于抽象类的初始化操作。 •接口里不能包含初始化块,但抽象类则完全可以包含初始化块。 •一个类最多只能有一个...

    文件转换引擎PantoJS.zip

    如果文件的转换是相互独立的,那么实现 _transform 方法即可,否则需要实现 transformAll 方法,它们都返回 Promise 对象,两种转换器使用 isTorrential() 方法来区分。具体请参见 panto-transformer-...

    JSON 编码/解码:解析 JSON 字符串并返回 MATLAB 对象或将 MATLAB 对象编码为 JSON 字符串-matlab开发

    json_decode 解析一个 ... 尽管此超集与较新的 RFC 7159(旨在取代 RFC 4627)中“JSON 文本”的扩展定义一致,但这可能会导致在对单个标量值进行编码时严格遵守 RFC 4627 的较旧 JSON 解析器的互操作性问题。 有关更多

    AsciiConverter:将像素值擦除到 ascii 转换器

    将像素值转换为 ascii 转换器是我仅使用内置 Java 库提交的第一个任务的扩展。 该项目是一个(有点无意义的)多线程应用程序,它加载图像,将其转换为灰度并将像素数据重新处理为 ascii 字符。 对我来说,这个项目的...

    《Java面向对象程序设计》(第版)课后答案.docx

    Java源文件的扩展名是.java.Java字节码的扩展名是.class. 7. D 8.〔1〕Speak.java 〔2〕生成两个字节码文件,这些字节码文件的名字Speak.class 和 Xiti8.class 〔3〕java Xiti8 〔4〕执行java Speak的错误提示 ...

    解释器模式(Interpreter)原理图

    在解释器模式中,语言中的每个符号都被定义为一个(对象)类,这样整个程序就被转换成一个具体的对象树。每个节点(即对象)都表示一个表达式中的一个符号,而整棵树则表示一个完整的表达式。通过遍历这棵树,解释器...

    spring.net中文手册在线版

    4.4.2.内置的类型转换器 4.4.3.自定义类型转换器 4.4.3.1.使用CustomConverterConfigurer类 4.5.自定义对象的行为 4.5.生命周期接口 4.5.1.1.IInitializingObject接口和init-method属性 4.5.1.2.IDisposable接口和...

    【最新版】ipe-7.2.18-mac.dmg【亲测可用】最好的可扩展图形编辑器

    Ipe是用于以PDF格式创建图形的图形编辑器。它支持制作小数字以包含在LaTeX文档中,以及进行多页PDF演示。 Ipe的主要功能是: 输入文本作为LaTeX源代码。这使得输入数学表达式和重用主文档的LaTeX宏变得容易。在...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     18.4.5 查询结果转换器  18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     18.4.5 查询结果转换器  18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     18.4.5 查询结果转换器  18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  19.1.1 使用默认的数据库连接池  19.1.2...

    MySQL 5.1中文手冊

    1.8.4. MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. MySQL处理约束的方式 2. 安装MySQL 2.1. 一般安装问题 2.1.1. MySQL支持的操作系统 2.1.2. 选择要安装的MySQL分发版 2.1.3. 怎样获得MySQL 2.1.4. ...

    DataGrid 实现复杂表头和合并行源码与示例

    五、支持自定义转换器(IValueConverter); 六、支持对象集合(ICollection)和支持动态字典集合(ICollection, object&gt;&gt;)的绑定 ; 七、对象集合使用 AddBindingPathTemplateColumn 函数,字典集合使用 ...

    store_attribute:ActiveRecord扩展,将类型转换添加到存储访问器

    ActiveRecord扩展,将类型转换添加到存储访问器。 与Rails 4.2和Rails 5+兼容。 从未合并的PR提取到Rails: 。 安装 在您的Gemfile中: # for Rails 5+ (6 is supported) gem "store_attribute" , "~&gt; 0.8.0" # ...

    UnityClothSkirtHelper:编辑器扩展,简化了使用Unity的Cloth组件创建裙的任务。 对于VRChat

    UnityClothSkirtHelper开源版本编辑器扩展,简化了使用Unity的Cloth组件创建裙的任务。 对于VRChat。 *图像正在开发中。安装ClothSkirtHelper-{VERSION}.unitypackage Unity并将包含的ClothSkirtHelper-{VERSION}....

Global site tag (gtag.js) - Google Analytics