`
gstarwd
  • 浏览: 1527485 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ajax打印对象时,转换由java对象转为Json格式的String时遇到的Hibernate问题

阅读更多

相信很多朋友的项目中会用到Ajax,并且也会有Hibernate框架,当2者同时存在,并且需要把Java对象乃至Java集合对象封装成Json形式的String时会出现一些异常.

              现在网上有很多的Json工具类,但是很少有能解析Hibernate配置了级联系关系以后的那种,即使有也是改了底层代码,调试起来非常的复杂.试想如 果关系是客户和订单一对多,订单和商品种类一对多,商品种类和商品一对多,商品和..&&(*&()我已经说不下去了,如果是这 样一个关系,单单用他们的工具格式会是怎么样的?

            {"customer":"god",{"order":"CN-2008-8-8CN",{"shopType":"vagetable", {"shop":"beef"}}}}.....以此类推,如果属性一多,别说前台调用,根本看都看不清楚.有的人说设置Hibernate的延迟加载可 以避免这个尴尬,但是貌似Hibernate默认就是延迟加载,我用的一个JsonUtil工具解析的时候经常出错.于是只好自己动手写一个方法,这个方 法把所有的非当前对象里的基本属性全部过滤掉,例如:School, Order, Customer等. 只需要纯的某个对象的所有key和value.这种格式封装的JsonString就很好打印了. 下面是这段代码..

            public Map getObjectForMap(Object obj) {
  //存放obj对象基本属性,不包括级联对象
  Map<Object, Object> map = new HashMap<Object, Object>();
  //obj对象的Class
  Class userClass = null;
  //obj对象的所有方法
  Method[] userMethod = null;
  //obj对象的所有字段
  Field[] userField = null;
  //obj对象单个属性的名字
  String fieldName = null;
  //obj对象单个属性的类型
  String fieldType = null;
  //截取后的obj对象单个属性名字,用来匹配属性对应的set\get方法. 如username,截后成为sername 匹配setUsername或getUsername方法
  String newFieldName = null;
  //obj对象单个方法的名字
  String methodName = null;
  //obj对象单个方法的类型
  String methodType = null;
  //SimpleDateFormat对象用来格式化时间..把时间变成字符串形式
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm");
  //arg参数代表存放时间被格式化后的字符串
  String arg = null;
  try{
   userClass = obj.getClass();
   userMethod = userClass.getDeclaredMethods();
   userField = userClass.getDeclaredFields();
   //遍历所有属性...
   for(int num = 0; num < userField.length; num++) {
    //单个属性名字
    fieldName = userField[num].getName();
    //单个属性的类型
    fieldType = userField[num].getType().getName();
    //如果属性名属于obj对象的基本属性(也就是非级联属性,例如:School school 为级联属性)..

    //此出过滤所有的非当前对象基本类型..如果有需要可以再此处增加新的类型,例入:StampTime等..
    if(fieldType.equals("java.lang.String")
     || fieldType.equals("java.lang.Integer")
     || fieldType.equals("int")
     || fieldType.equals("java.util.Date")) {
     //截取后的属性名,username 截取为sername;
     newFieldName = fieldName.substring(1, fieldName.length());
     //遍历所有方法
     for(int index = 0; index < userMethod.length; index++) {
      //单个方法名
      methodName = userMethod[index].getName();
      //单个方法的返回类型
      methodType = userMethod[index].getReturnType().getName();
      //选取所有方法前缀为get并且方法名与属性名匹配的方法..
      if(methodName.indexOf(newFieldName) != -1 && methodName.indexOf("get") != -1) {
       //格式化Date为String
       if(methodType.equals("java.util.Date")) {
        arg = sdf.format(userMethod[index].invoke(obj));
        map.put(fieldName, arg);
       } else {
        map.put(fieldName, userMethod[index].invoke(obj));
       }
      }
     }
     }
   }
  } catch (Exception e) {
   System.out.println(e.toString() + "  运行出错..");
  }
  return map;
 }

返回map以后,再用网上常见的Json工具包里的转Map为JsonString格式的方法一处理就可以很好的丢到前台打印啦....

分享到:
评论
1 楼 wkcgy 2011-05-29  
如果需要显示配置了级联关系的属性时如何操作呢?

相关推荐

    基于Java的源码-JSON类库 Flexjson.zip

    Flexjson是一个轻量级的Java库,用于将Java对象转换为JSON格式的字符串,反之亦然。这个压缩包“Flexjson.zip”包含了Flexjson库的版本2.1,这是一个广泛使用的工具,尤其在处理JSON数据时,对于开发人员来说非常...

    struts2 json传输对象文档+jar包

    "json-lib-2.4-ALL.rar"是一个包含JSON库的压缩文件,JSON Lib是一个Java库,用于在Java对象和JSON数据之间进行转换,它是Struts2实现JSON支持的一个依赖库。 在Struts2中使用JSON,首先需要在配置文件(struts.xml...

    ssh中将含有级联对象的list转化为json

    在处理数据展示时,我们可能需要将后端Java对象转换为JSON格式,以便于前端EasyUI进行渲染和操作。本文将详细探讨如何在SSH框架中将含有级联对象或集合的List转化为JSON。 首先,了解JSON(JavaScript Object ...

    json完整版下载

    2. Gson:Google提供的库,通过简单的API将Java对象转换为JSON字符串,并可以从JSON字符串中反序列化回Java对象。Gson特别适合简单的数据模型,其API直观且易于使用。 3. org.json:这是一个轻量级的库,提供了`org...

    sturts框架下返回json数据 list map 对象

    这些库提供了将Java对象转换为JSON字符串的功能。在描述中提到的`strutsjson`压缩包可能包含了必要的库文件。 2. **配置Struts2**:在`struts.xml`配置文件中,你需要为处理JSON请求的Action定义一个特定的拦截器栈...

    JSON开发完整资源包

    例如,Gson库通过`Gson().toJson()`方法将Java对象转换为JSON,而`Gson().fromJson()`则可以将JSON字符串还原为Java对象。 资源包中提到的"和其他框架整合的jar"可能包含了这些JSON处理库,使得开发者可以直接在...

    Hibernate说明文档.rar_ajax_hibernate

    Hibernate 是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中管理关系数据库的强大工具。通过使用Hibernate,开发者可以将数据库操作与业务逻辑解耦,使代码更加简洁、高效。本指南将深入...

    Ajax+hibernate+struts实现无刷新的分页

    **Ajax+Hibernate+Struts 实现无刷新分页详解** 在Web开发中,提供分页功能是必不可少的,尤其在处理大数据量时,无刷新分页可以极大地提升用户体验。本篇将详细介绍如何利用Ajax、Hibernate和Struts框架,构建一个...

    json jar包

    序列化是将Java对象转换为JSON字符串,反序列化则是将JSON字符串转换回Java对象。以Jackson为例,使用`ObjectMapper`类可以轻松完成这个过程: ```java import com.fasterxml.jackson.databind.ObjectMapper; // ...

    struts2+json

    当我们在Struts2框架中整合SSH(Spring、Struts2、Hibernate)时,可能会遇到与JSON相关的数据处理问题。下面我们将深入探讨Struts2整合JSON的相关知识点。 首先,Struts2提供了一种内置的JSON支持,允许我们直接将...

    java Ajax联动效果

    在IT行业中,Java和Ajax是两种非常重要的技术,它们在构建动态、交互性强的Web应用程序时发挥着关键作用。本文将深入探讨如何利用Java后端技术和Ajax前端技术实现数据库的实时联动效果。 首先,让我们理解Java和...

    ssh2+ajax+jquery+json验证用户名是否存在

    - Hibernate作为ORM工具,负责将Java对象映射到数据库表。通过Session Factory创建Hibernate Session,执行HQL(Hibernate Query Language)或SQL查询来检查用户名是否存在。 总的来说,这个过程结合了前端的动态...

    java实现ajax验证用户名

    在Web开发中,Java与Ajax(Asynchronous JavaScript and XML)的结合可以实现异步数据交互,提高用户体验。本文将深入探讨如何使用Java后端和Ajax前端技术来验证用户名的唯一性,以确保用户注册时输入的用户名未被...

    Struts2 + jQuery 实现ajax.txt

    当客户端发送请求到`ajaxRequest.action`时,会触发`HelloWorld`类中的方法,并返回JSON格式的数据。 **2. 使用jQuery发送Ajax请求** 在前端页面中,我们可以通过jQuery轻松地发送Ajax请求。例如,在`helloworld....

    java调用ajax实时监测用户名是否存在

    总结来说,实现“Java调用Ajax实时监测用户名是否存在”的功能,需要结合前端的Ajax技术与后端的Java接口,通过异步通信方式在用户输入时检查数据库,提供即时反馈。这个过程中涉及到HTML表单、JavaScript、jQuery、...

    代码工程 Web 基础之 SSH 框架访问网页返回 json 数据简单实现的整理

    3. **返回JSON对象**:在处理方法中,创建一个Java对象,该对象的属性对应于要返回的JSON键值对。例如,你可以创建一个`ResponseBean`类,包含你需要的属性,如`status`和`message`。 ```java public class ...

    highcharts加载数据库数据(java版)

    在Java端,我们将使用Java后端框架(如Spring MVC或Struts2)来处理数据,然后将数据转换成JSON格式,因为Highcharts能够直接解析JSON数据来生成图表。以下是一个基本流程: 1. **连接数据库**:使用Java的JDBC API...

    Ajax day2技术保密资料文档下载

    var jsonString = JSON.stringify(student); ``` - **反序列化 (Deserialization)**:将 JSON 字符串转换为 JavaScript 对象。 ```javascript var obj = JSON.parse(jsonString); ``` #### 3. Java 与 JSON ...

    JAVA面试大全包含绝大部分JAVA程序员面试的问题

    Java面试大全涵盖了大部分Java程序员在面试中可能会遇到的问题,这些题目分布在十个主要部分,全面考察了应聘者的Java核心知识、面向对象设计与UML、XML处理、SQL操作、JDBC与Hibernate框架、Web开发技术、EJB与...

    DWR 初始,返回字符串&对象&列表

    DWR支持将Java对象转换为JSON格式,然后在JavaScript中解析。假设你有一个Java类`Person`,包含姓名和年龄属性,你可以创建一个`Person`对象并返回。DWR会将其转换为JSON字符串,JavaScript端可以接收到一个...

Global site tag (gtag.js) - Google Analytics