首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

Json 平添元素拼接JSON字符串(转)

2012-12-22 
Json 添加元素拼接JSON字符串(转)package com.utilimport java.util.ArrayListimport java.util.Iterato

Json 添加元素拼接JSON字符串(转)

package com.util;import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;/** * JSON utility class * * @since 2008-04-21 */public class Json {    // test    public static void main(String[] args) {        Json json1 = new Json();        json1.add("totalCount", 2);        json1.add("isTest", true);                Json json_a = new Json();        json_a.add("menuid", 1);        json_a.add("menuname", "testmenu");        json1.add("topics", json_a);                Json json_b = new Json();        json_b.add("menuid", 2);        json_b.add("menuname", "testmenu");        json1.add("topics", json_b);        System.out.println(json1.toString());    }    private Map map = new LinkedHashMap();    /**     * 添加一个 JSON 属性,值为一个字符串,重复添加时产生数组<p/>     *      * add("name", "value");<br/>     * 添加一个字符串,产生的 JSON 如:{"name":"value"}<p/>     *      * add("name", "value1");<br/>     * add("name", "value2");<br/>     * 添加两个同属性的字符串,产生的 JSON 如:{"name":["value1", "value2"]}<p/>     *      * @param key       JSON 属性名      * @param str       字符串格式的属性值      */    public void add(String key, String value) {        addElement(key, value);    }        public void add(String key, int num) {        addElement(key, new Integer(num));    }        public void add(String key, boolean b) {        addElement(key, new Boolean(b));    }    /**     * 添加一个 JSON 属性,值为一个 JSON,重复添加时产生 JSON 数组<p/>     *      * Json json1 = new Json();<br/>     * json1.add("name1", "value1");<br/>     * json1.add("name2", "value2");<br/>     * Json json = new Json();<br/>     * json.add("message", json1);<br/>     * 添加一个 JSON,产生的 JSON 如:{"message":{"name1":"value1", "name2":"value2"}}<p/>     *      * Json json1 = new Json();<br/>     * json1.add("name1", "value1");<br/>     * json1.add("name2", "value2");<br/>     * Json json2 = new Json();<br/>     * json2.add("name1", "value3");<br/>     * json2.add("name2", "value4");<br/>     * Json json = new Json();<br/>     * json.add("message", json1);<br/>     * json.add("message", json2);<br/>     * 添加两个同属性的 JSON,产生的 JSON 如:{"message":[{"name1":"value1", "name2":"value2"}, {"name1":"value3", "name2":"value4"}]}<p/>     *      * @param key       JSON 属性名      * @param json      JSON 格式的属性值      */    public void add(String key, Json json) {        addElement(key, json);    }    public String toString() {        StringBuilder sb = new StringBuilder();        sb.append("{");        int k = 0;        for (Iterator i = map.keySet().iterator(); i.hasNext();) {            String key = (String)(i.next());            Object obj = map.get(key);            if (k > 0) {                sb.append(",");            }            appendKey(sb, key);            if (obj instanceof String) {                appendString(sb, (String)obj);            } else if (obj instanceof List) {                appendList(sb, (List)obj);            } else if (obj instanceof Json) {                appendJson(sb, (Json)obj);            } else {                appendOther(sb, obj);            }            k++;        }        sb.append("}");        return sb.toString();    }    private void addElement(String key, Object obj) {        if (!map.containsKey(key)) {            if(obj instanceof Json) {                List list = new ArrayList();                list.add(obj);                map.put(key, list);            } else {                map.put(key, obj);            }            return;        }        Object o = map.remove(key);        if (o instanceof List) {            ((List)o).add(obj);            map.put(key, o);            return;        }        // o is a String        List list = new ArrayList();        list.add(o);        list.add(obj);        map.put(key, list);    }    /**     * Append JSON property name     *      * @param sb     * @param key     */    private void appendKey(StringBuilder sb, String key) {        sb.append(""").append(key).append("":");    }    /**     * Append JSON property value that is a String     *      * @param sb     * @param str     */    private void appendString(StringBuilder sb, String str) {        sb.append(""").append(str).append(""");    }        /**     * Append JSON property value that is a Integer     *      * @param sb     * @param num     */    private void appendOther(StringBuilder sb, Object obj) {        sb.append(obj);    }    /**     * Append JSON property value that is a List     *      * @param sb     * @param list     */    private void appendList(StringBuilder sb, List list) {        sb.append("[");        for (int j = 0, m = list.size(); j < m; j++) {            if (j > 0) {                sb.append(",");            }            Object obj = list.get(j);            if (obj instanceof String) {                appendString(sb, (String)obj);            } else if (obj instanceof Json) {                appendJson(sb, (Json)obj);            } else {                appendOther(sb, obj);            }        }        sb.append("]");    }    /**     * Append JSON property value that is a JSON     *      * @param sb     * @param json     */    private void appendJson(StringBuilder sb, Json json) {        sb.append(json.toString());    }}

?

热点排行