`
starbhhc
  • 浏览: 655504 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

2. java 反射机制构建JSON字符串

阅读更多
jdbc获取list转为json。


import java.lang.reflect.Field; 
import java.lang.reflect.InvocationTargetException; 
import java.lang.reflect.Method; 
import java.util.ArrayList; 
import java.util.List; 
 
import com.test.hzw.bean.test_user; 
import com.test.hzw.dao.impl.DaoImpl; 
 
/**
* Json转换测试类
* @author star
*
*/ 
@SuppressWarnings({"unchecked","unused"}) 
public class Reflect004 { 
 
    /**
     * @param args
     * @throws Exception 
     */ 
    public static void main(String[] args) throws Exception { 
        DaoImpl dao = new DaoImpl(); 
        test_user u = new test_user(); 
        String sqlPage = "SELECT * FROM user WHERE id <= "; 
        sqlPage += " (SELECT id FROM user ORDER BY id LIMIT "+(2-1)*20+", 1) "; 
        sqlPage += " ORDER BY id LIMIT 20 " ;   
        /*
         * 从数据库查询并获得集合
         * 
         * PS: 该方法是上一篇文章的内容
         */ 
        List<test_user> listT = (List<test_user>)dao.findList(u, sqlPage, new ArrayList()); 
        String s = ToJsonByList(listT); 
        System.out.println(s);   
        System.out.println(ToJsonByAll(listT.get(0)).toString()); 
    }  
     
    /**
     * 根据List集合生成Json数组格式字符串(只支持bean方式)
     * @param <T>
     * @param list 集合对象
     * @return  star
     */ 
    public static <T> String ToJsonByList(List<T> list){ 
        StringBuffer b = new StringBuffer("["); 
        if(list!=null&&list.size()>0){ 
            for (int i = 0; i < list.size(); i++){ 
                Object o = list.get(i); 
                try { 
                    //调用ToJsonByBean方法 
                    StringBuffer s = ToJsonByBean(o); 
                    if(s!=null&&!s.equals("")){ 
                        b.append(s).append(",");  
                    } 
                } catch (Exception e) {      
                    e.printStackTrace(); 
                }  
            }    
        } 
        b.append("]"); 
        return b.replace(b.lastIndexOf(","),b.lastIndexOf(",") + 1 ,"").toString(); 
    } 
     
    /** 
     * 根据javaBean生成Json对象格式字符串 
     * @param object 任意javaBean类型对象 
     * @return 拼接好的StringBuffer对象 
     */   
    public static StringBuffer ToJsonByBean(Object object) throws Exception{   
        Class clazz = object.getClass();  //获得Class对象 
        Field[] fields = clazz.getDeclaredFields();  //获得Class对象的字段数组 
        StringBuffer sb = new StringBuffer("{");  
        /*
         * 循环字段数组
         */ 
        for (Field field : fields) {     
            String fieldName = field.getName(); //获得字段名称    
            //获得字段对应的get方法对象 
            Method method = clazz.getMethod("get" + change(fieldName), null);   
            //调用get方法获得字段的值 
            Object property = method.invoke(object, null);   
             
            /*
             * 生成json字符串数据
             */ 
            if(property == null){   
                sb.append("\""+fieldName+"\":\"\",");     
            }else{ 
                if (field.getType().getName().equals("java.lang.Boolean")) 
                    sb.append("\""+fieldName+"\":"+Boolean.valueOf(property.toString())+",");    
                else 
                    sb.append("\""+fieldName+"\":\""+property+"\",");  
            }   
        }              
        sb.append("}");           
        return sb.replace(sb.lastIndexOf(","),sb.lastIndexOf(",") + 1 ,"");   
    }   
       
    /** 
     * @param src 源字符串 
     * @return 字符串,将src的第一个字母转换为大写,src为空时返回null 
     */   
    public static String change(String src) {   
        if (src != null) {   
            StringBuffer sb = new StringBuffer(src);   
            sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));   
            return sb.toString();   
        } else {   
            return null;   
        }   
    }   
     
    /** 
     * 生成Json数组格式字符串 
     * @param object 任意类型对象 
     * @return 拼接好的StringBuffer对象 
     */   
    public static StringBuffer ToJsonByAll(Object object) throws Exception{   
        Class clazz = object.getClass();   
        Field[] fields = clazz.getDeclaredFields();   
        StringBuffer sb = new StringBuffer("{[");   
        for (Field field : fields) {   
            String fieldName = field.getName();   
            Method method = clazz.getMethod("get" + change(fieldName), null);   
            Object property = method.invoke(object, null);   
            if(property == null){     
                sb.append("\"\",");   
            }else{   
                sb.append("\"" + property + "\",");   
            }   
        }          
        sb.append("]}");           
        return sb.replace(sb.lastIndexOf(","),sb.lastIndexOf(",") + 1 ,"");   
    } 
     
 
分享到:
评论

相关推荐

    java反射实现Object转json

    对于更复杂的情况,推荐使用专门的JSON库,它们通常提供了更完善的解决方案,例如Gson的`Gson.toJson()`方法可以直接将Java对象转换为JSON字符串,而无需手动处理反射。 此外,Java标准库中的`java.beans....

    Json处理工具类

    这是一个未完整给出的方法示例,其目的是将Java对象转换为JSON字符串。通常情况下,可以使用`Gson`库来实现这一功能。例如: ```java public static String toJson(Object obj) { Gson gson = new Gson(); return...

    jsonlib需要jar包

    `json-lib`是Java中一个常用的JSON库,它提供了将Java对象转换为JSON格式以及将JSON字符串反序列化为Java对象的功能。 `json-lib-2.4-jdk15`是`json-lib`的一个特定版本,适用于JDK1.5环境。这个库依赖于其他几个...

    java-任何类型转换成json数据格式

    - 在处理大量数据时,需要考虑性能优化问题,例如可以采用StringBuilder来构建JSON字符串,而不是频繁使用字符串拼接操作。 #### 五、实际应用场景 1. **前后端交互**:在Web应用中,后端服务通常会将业务数据转化...

    Java json全套依赖包

    2. **Gson**:Google开发的库,可以将Java对象转换为JSON字符串,反之亦然。Gson通过反射机制实现JSON和Java对象的互转,使用简单。 3. **org.json**:一个小型的、开源的Java库,用于解析和生成JSON。它包含一个...

    json工具包

    这些工具包提供了方便的方法来解析JSON字符串为Java对象,以及将Java对象序列化为JSON字符串。 1. **Jackson**:Jackson是Java最常用的JSON库之一,它提供了高性能和灵活性。其核心组件包括: - `Jackson-databind...

    基于java反射机制的山寨版WEB2

    在Java中,可以使用`org.json`库或者Jackson、Gson等第三方库将Java对象转换成JSON字符串,反之亦然。Spring MVC提供了`@RequestBody`和`@ResponseBody`注解,可以方便地将HTTP请求体解析为Java对象,或将处理结果...

    拷贝JSON对象值进Java Bean对象

    以`org.json`库为例,我们可以使用`JSONObject`类来解析JSON字符串,并将其内容映射到Java Bean。假设我们有以下JSON对象: ```json { "name": "John Doe", "age": 30, "isStudent": false } ``` 对应的Java ...

    JSON封装数据与取值

    - 使用`StringBuilder`构建JSON字符串。 - 利用`Class`和`Field`类获取对象的属性名称和值。 - 将属性名称和值转化为键值对形式并加入到JSON字符串中。 - 处理列表中的多个对象时,将每个对象的JSON表示作为数组元素...

    json-me 源码

    2. **JSON到对象转换**:反之,它也能将JSON字符串解析成对应的Java对象,包括通过反射机制自动映射JSON键值到Java字段。 3. **类型安全**:库在进行转换时会确保类型匹配,避免潜在的运行时异常。 4. **定制序列...

    转json格式所需的5个jar包.

    2. **Gson库**:Google开发的Gson库是一个强大的JSON库,可以将Java对象转换为JSON字符串,反之亦然。Gson通过反射机制自动处理对象的序列化和反序列化,使用简单,性能高效。 3. **org.json库**:这是一个小型的、...

    json相关的jar包驱动

    开发者可以通过将其添加到项目的类路径中,从而在项目中使用这些库的功能,比如将Java对象转换为JSON字符串,或者从JSON字符串解析出Java对象。 总的来说,JSON相关的jar包驱动对于Java开发者来说是不可或缺的工具...

    xml解析和json解析.zip

    此外,它还支持JSON Schema验证,以及直接映射Java反射机制,使得JSON与Java对象之间的转换变得极其便捷。 4. **JSON解析**: JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON...

    java解析json最新jar包-2014.2.25

    在实际应用中,开发者可以使用JSON-Lib将Java对象序列化为JSON字符串,然后通过Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML)技术发送到服务器,或者从服务器接收JSON数据并反序列化为Java对象。...

    eclipse-json相关jar包

    以下是一个简单的示例,展示了如何使用json-lib将一个Java Map对象转换为JSON字符串: ```java import net.sf.json.JSONObject; import java.util.HashMap; import java.util.Map; public class JsonExample ...

    json-lib-2.4及其依赖包.zip

    2. 对象转JSON:将Java对象转换为JSON字符串,可以使用`JSONObject.fromObject()`方法,对于集合或数组,可以使用`JSONArray.fromObject()`。 3. JSON转对象:从JSON字符串反序列化回Java对象,可以使用`JSONObject...

    json 数据解析包

    总结来说,这些Java库为处理JSON数据提供了强大的工具,从解析JSON字符串到创建和操作JSON对象,再到序列化回字符串,整个过程都得到了很好的支持。它们的结合使用大大简化了开发人员的工作,提高了开发效率。

    json-jar包

    开发者可以利用这些库的功能,轻松地将Java对象转换为JSON字符串进行网络传输,或者将接收到的JSON数据解析为Java对象进行进一步处理。通过集成这些库,可以显著提高JSON处理的效率和代码的可读性,减少手动编码的...

    json依赖包json依赖包json依赖包

    这些库提供了API,使得Java开发者可以方便地将JSON字符串转化为Java对象(如HashMap、ArrayList等),也可以将Java对象转化为JSON字符串。例如: - **Jackson**:这是一个高性能的JSON处理器,提供了解析JSON、生成...

    Android-android执行字符串代码--实现接口可配置跳转任何Activity

    // 解析得到的JSON字符串 JSONObject jsonObject = new JSONObject(jsonString); String className = jsonObject.getString("className"); Class&lt;?&gt; activityClass = Class.forName(className); Intent intent...

Global site tag (gtag.js) - Google Analytics