`
long272449358
  • 浏览: 65773 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

java生成json格式数据,一个简单的class,不需要第三方lib包支持

    博客分类:
  • Java
阅读更多
很简陋,不过一般应用足矣,有BUG麻烦说一声,尤其是字符串转义stringToJson函数(这个函数不是我写的,没测过),
/**
 *  java生成json格式数据,一个简单的class,不需要第三方lib包支持
 */
package lhp.code.tools;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

/**
 * JS数据交换格式
 * @version v0.1
 * @author longHP
 */
public class JsDataTools {
    /**
     * 获取js数据
     * @param 元数据map
     * @return js数据
     */
    public synchronized static String getJsData(Object obj) {
        return createJsData(obj);
    }
    
    /**
     * 生成js数据
     * @param 元数据map
     * @return js数据
     */
    @SuppressWarnings("unchecked")
    public static String createJsData(Object obj) {
        if (null == obj) {
            return "\"\"";
        }
        StringBuffer resultStr = new StringBuffer();
        if (obj instanceof Collection) {    // 集合List、Set等类型
            resultStr.append("[");
            Collection collection = (Collection) obj;
            if (collection.size() > 0) {
                Object[] collectionObj = collection.toArray();
                for (int i = 0; i < collectionObj.length; i++) {
                    resultStr.append(createJsData(collectionObj[i]) + ",");
                }
                resultStr.deleteCharAt(resultStr.lastIndexOf(","));
            }
            resultStr.append("]");
        } else if (obj instanceof Map) {    // Map类型
            resultStr.append("{");
            Map map = (Map) obj;
            if (map.size() > 0) {
                Iterator<Entry> iter = map.entrySet().iterator();
                while (iter.hasNext()) {
                    Map.Entry entry = iter.next();
                    String key = entry.getKey().toString();
                    resultStr.append("\"" + key + "\":");    // jquery1.4以上要求双引号包裹
                    Object tempObj = entry.getValue();
                    resultStr.append(createJsData(tempObj) + ",");
                }
                resultStr.deleteCharAt(resultStr.lastIndexOf(","));
            }
            resultStr.append("}");
        } else {    // 基本类型
            try {
                int arrLength = Array.getLength(obj);
                resultStr.append("[");
                if (arrLength > 0) {
                    for (int i = 0; i < arrLength; i++) {
                        resultStr.append(createJsData(Array.get(obj, i)) + ",");
                    }
                    resultStr.deleteCharAt(resultStr.lastIndexOf(","));
                }
                resultStr.append("]");
            } catch (IllegalArgumentException e) {    // 不是数组,是最基本的数据
                resultStr.append("\"" + stringToJson(obj + "") + "\"");
            }
        }
        return resultStr.toString();
    }
    
    /**
     * 处理特殊字符
     * @param json字符串
     * @return 处理过的字符串
     */
    public static String stringToJson(String str) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            switch (c) {
                case '\"':
                    sb.append("\\\"");
                    break;
                case '\\':
                    sb.append("\\\\");
                    break;
                case '/':
                    sb.append("\\/");
                    break;
                case '\b':
                    sb.append("\\b");
                    break;
                case '\f':
                    sb.append("\\f");
                    break;
                case '\n':
                    sb.append("\\n");
                    break;
                case '\r':
                    sb.append("\\r");
                    break;
                case '\t':
                    sb.append("\\t");
                    break;
                default:
                    sb.append(c);
            }
        }
        return sb.toString();
    }
    
    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
//        String obj = null;
//        if (Arrays.asList(obj).get(0) == null) {
//            System.out.println(Arrays.asList(obj).get(0));
//        }
//        String str = "fds";
//        java.lang.reflect.Array.getLength(str);
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("a", "1");
        map.put("b", "2");
        int[] intArr = {1,2,3};
//        int[] intArr = new int[0];
//        System.out.println(intArr.length);
//        System.out.println(Arrays.asList(intArr).get(0));
//        java.lang.reflect.Array.getLength(intArr);
        map.put("intArr", intArr);
        Map childMap = new HashMap();
        childMap.put(3, 5);
        childMap.put(7, new HashMap());
        childMap.put(new Object(), intArr);
        map.put("map", childMap);
        List childList = new ArrayList();
        childList.add(true);
        childList.add(new ArrayList());
        childList.add(intArr);
        map.put("list1", childList);
        System.out.println(JsDataTools.getJsData(map));
    }
}
分享到:
评论
1 楼 xjwolaile 2012-08-14  
哥哥
我太崇拜你了
我在网上找了3天的一个生成列子网上说的都不知道是些什么
我也是个新手所以也不大明白
但是我看到了哥你 我忽然就像看到了希望一样
太谢谢你让我知道这样的一个生成方法

相关推荐

    java开源包4

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包8

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包11

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包6

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包9

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包5

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包101

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包10

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包1

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包3

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包2

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    java开源包7

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    Java资源包01

    Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 类库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC...

    易语言-WEB客户支持库1.0#5版(静态版)(第三方)

    json_static.lib支持库中文名为易语言WEB客户支持库,本易语言支持库实现对json解析的支持。 JSON(JavaScript Object ...json_static.lib支持库为易语言第三方支持库静态版。 操作系统需求: Windows 易语言官方论坛

    java微信公众号MVC开发框架

    微信公众号采用web服务作为消息与第三方平台发生交互,数据格式主要是xml和json,普通的web请求响应机制采用xml数据格式交互,微信接口服务采用json数据格式。jwx主要对这两个方面做了封装处理,另外借鉴springmvc的...

Global site tag (gtag.js) - Google Analytics