<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 33,  comments - 17,  trackbacks - 0
      1// 生成JSON字符串工具
      2import java.util.ArrayList;
      3import java.util.Iterator;
      4import java.util.LinkedHashMap;
      5import java.util.List;
      6import java.util.Map;
      7
      8/**
      9 * JSON utility class
     10 *
     11 * @since 2008-04-21
     12 */

     13public class Json {
     14
     15    // test
     16    public static void main(String[] args) {
     17        Json json1 = new Json();
     18        json1.add("totalCount"2);
     19        json1.add("isTest"true);
     20        
     21        Json json_a = new Json();
     22        json_a.add("menuid"1);
     23        json_a.add("menuname""testmenu");
     24        json1.add("topics", json_a);
     25        
     26        Json json_b = new Json();
     27        json_b.add("menuid"2);
     28        json_b.add("menuname""testmenu");
     29        json1.add("topics", json_b);
     30        System.out.println(json1.toString());
     31    }

     32
     33    private Map map = new LinkedHashMap();
     34
     35    /**
     36     * 添加一個 JSON 屬性,值為一個字符串,重復(fù)添加時產(chǎn)生數(shù)組<p/>
     37     * 
     38     * add("name", "value");<br/>
     39     * 添加一個字符串,產(chǎn)生的 JSON 如:{"name":"value"}<p/>
     40     * 
     41     * add("name", "value1");<br/>
     42     * add("name", "value2");<br/>
     43     * 添加兩個同屬性的字符串,產(chǎn)生的 JSON 如:{"name":["value1", "value2"]}<p/>
     44     * 
     45     * @param key       JSON 屬性名
     46      * @param str       字符串格式的屬性值
     47      */

     48    public void add(String key, String value) {
     49        addElement(key, value);
     50    }

     51    
     52    public void add(String key, int num) {
     53        addElement(key, new Integer(num));
     54    }

     55    
     56    public void add(String key, boolean b) {
     57        addElement(key, new Boolean(b));
     58    }

     59
     60    /**
     61     * 添加一個 JSON 屬性,值為一個 JSON,重復(fù)添加時產(chǎn)生 JSON 數(shù)組<p/>
     62     * 
     63     * Json json1 = new Json();<br/>
     64     * json1.add("name1", "value1");<br/>
     65     * json1.add("name2", "value2");<br/>
     66     * Json json = new Json();<br/>
     67     * json.add("message", json1);<br/>
     68     * 添加一個 JSON,產(chǎn)生的 JSON 如:{"message":{"name1":"value1", "name2":"value2"}}<p/>
     69     * 
     70     * Json json1 = new Json();<br/>
     71     * json1.add("name1", "value1");<br/>
     72     * json1.add("name2", "value2");<br/>
     73     * Json json2 = new Json();<br/>
     74     * json2.add("name1", "value3");<br/>
     75     * json2.add("name2", "value4");<br/>
     76     * Json json = new Json();<br/>
     77     * json.add("message", json1);<br/>
     78     * json.add("message", json2);<br/>
     79     * 添加兩個同屬性的 JSON,產(chǎn)生的 JSON 如:{"message":[{"name1":"value1", "name2":"value2"}, {"name1":"value3", "name2":"value4"}]}<p/>
     80     * 
     81     * @param key       JSON 屬性名
     82      * @param json      JSON 格式的屬性值
     83      */

     84    public void add(String key, Json json) {
     85        addElement(key, json);
     86    }

     87
     88    public String toString() {
     89        StringBuilder sb = new StringBuilder();
     90        sb.append("{");
     91        int k = 0;
     92        for (Iterator i = map.keySet().iterator(); i.hasNext();) {
     93            String key = (String)(i.next());
     94            Object obj = map.get(key);
     95            if (k > 0{
     96                sb.append(",");
     97            }

     98            appendKey(sb, key);
     99            if (obj instanceof String) {
    100                appendString(sb, (String)obj);
    101            }
     else if (obj instanceof List) {
    102                appendList(sb, (List)obj);
    103            }
     else if (obj instanceof Json) {
    104                appendJson(sb, (Json)obj);
    105            }
     else {
    106                appendOther(sb, obj);
    107            }

    108            k++;
    109        }

    110        sb.append("}");
    111        return sb.toString();
    112    }

    113
    114    private void addElement(String key, Object obj) {
    115        if (!map.containsKey(key)) {
    116            if(obj instanceof Json) {
    117                List list = new ArrayList();
    118                list.add(obj);
    119                map.put(key, list);
    120            }
     else {
    121                map.put(key, obj);
    122            }

    123            return;
    124        }

    125
    126        Object o = map.remove(key);
    127
    128        if (o instanceof List) {
    129            ((List)o).add(obj);
    130            map.put(key, o);
    131            return;
    132        }

    133
    134        // o is a String
    135        List list = new ArrayList();
    136        list.add(o);
    137        list.add(obj);
    138        map.put(key, list);
    139    }

    140
    141    /**
    142     * Append JSON property name
    143     * 
    144     * @param sb
    145     * @param key
    146     */

    147    private void appendKey(StringBuilder sb, String key) {
    148        sb.append("\"").append(key).append("\":");
    149    }

    150
    151    /**
    152     * Append JSON property value that is a String
    153     * 
    154     * @param sb
    155     * @param str
    156     */

    157    private void appendString(StringBuilder sb, String str) {
    158        sb.append("\"").append(str).append("\"");
    159    }

    160    
    161    /**
    162     * Append JSON property value that is a Integer
    163     * 
    164     * @param sb
    165     * @param num
    166     */

    167    private void appendOther(StringBuilder sb, Object obj) {
    168        sb.append(obj);
    169    }

    170
    171    /**
    172     * Append JSON property value that is a List
    173     * 
    174     * @param sb
    175     * @param list
    176     */

    177    private void appendList(StringBuilder sb, List list) {
    178        sb.append("[");
    179        for (int j = 0, m = list.size(); j < m; j++{
    180            if (j > 0{
    181                sb.append(",");
    182            }

    183            Object obj = list.get(j);
    184            if (obj instanceof String) {
    185                appendString(sb, (String)obj);
    186            }
     else if (obj instanceof Json) {
    187                appendJson(sb, (Json)obj);
    188            }
     else {
    189                appendOther(sb, obj);
    190            }

    191        }

    192        sb.append("]");
    193    }

    194
    195    /**
    196     * Append JSON property value that is a JSON
    197     * 
    198     * @param sb
    199     * @param json
    200     */

    201    private void appendJson(StringBuilder sb, Json json) {
    202        sb.append(json.toString());
    203    }

    204}

    205
    posted on 2008-07-23 17:22 scea2009 閱讀(4959) 評論(2)  編輯  收藏

    FeedBack:
    # re: 生成 JSON 字符串的工具
    2013-07-27 12:05 | 11112dacda
    12121  回復(fù)  更多評論
      
    # re: 生成 JSON 字符串的工具
    2013-09-12 13:49 | hls
    ddddddddd  回復(fù)  更多評論
      

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    <2008年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    PL/SQL存儲過程與函數(shù)

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品中文字幕乱码影院| 亚洲AV无码专区亚洲AV桃| 亚洲精品无码乱码成人| 嫖丰满老熟妇AAAA片免费看| 国产亚洲男人的天堂在线观看| 亚洲精品无码专区| 亚洲成a人片77777老司机| 亚洲男人的天堂在线播放| 亚洲国产人成在线观看69网站 | 手机在线毛片免费播放| 无码永久免费AV网站| 精品亚洲永久免费精品| 久久久久久久岛国免费播放| 在线观看永久免费| 老司机在线免费视频| 免费爱爱的视频太爽了| 亚洲不卡AV影片在线播放| 久久精品国产亚洲Aⅴ蜜臀色欲| 免费高清在线影片一区| 免费国产在线观看不卡| 无码免费午夜福利片在线| 免费视频淫片aa毛片| 亚洲午夜av影院| 亚洲av无码无在线观看红杏| 亚洲午夜福利精品无码| 亚洲av永久无码精品漫画| 亚洲嫩草影院在线观看| 亚洲久热无码av中文字幕| 日韩免费码中文在线观看| 国产精品偷伦视频观看免费| 国产日本一线在线观看免费| 国产男女猛烈无遮挡免费视频 | 国产成人在线观看免费网站| 爱情岛论坛网亚洲品质自拍| 亚洲第一极品精品无码久久| 亚洲中文久久精品无码1| 黄页免费视频播放在线播放| 精品国产麻豆免费人成网站| 无码人妻一区二区三区免费| 久久亚洲高清综合| 亚洲乱码一区av春药高潮|