当前位置: 代码迷 >> JavaScript >> JSON 范例
  详细解决方案

JSON 范例

热度:885   发布时间:2012-12-26 14:39:28.0
JSON 实例

?

?

一、Java Action关键代码一:

?

			String jsonStr = JsonTool.list2Json(list);
			response.setContentType("text/html; charset=GBK");
			response.getWriter().write(jsonStr);
			return null;
?

?

?

二、JsonTool.java

?

?

package com.comba.omc.web.tool;

import java.sql.Timestamp;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class JsonTool {

public static String string2Json(String s) { 
    StringBuilder sb = new StringBuilder(s.length()+20); 
    sb.append('\"'); 
    for (int i=0; i<s.length(); i++) { 
        char c = s.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); 
        } 
    } 
    sb.append('\"'); 
    return sb.toString(); 
 }

	public static String map2Json(Map<String, Object> map) { 
	    if (map.isEmpty()) 
	        return "{}"; 
	    StringBuilder sb = new StringBuilder(map.size() << 4); 
	    sb.append('{'); 
	    Set<String> keys = map.keySet(); 
	    for (String key : keys) { 
	        Object value = map.get(key); 
	        sb.append('\"'); 
	        sb.append(key); 
	        sb.append('\"'); 
	        sb.append(':'); 
	        sb.append(toJson(value)); 
	        sb.append(','); 
	    } 
	    // 将最后的 ',' 变为 '}': 
	    sb.setCharAt(sb.length()-1, '}'); 
	    return sb.toString(); 
	} 


	public  static String array2Json(Object[] array) { 
	    if (array.length==0) 
	        return "[]"; 
	    StringBuilder sb = new StringBuilder(array.length << 4); 
	    sb.append('['); 
	    for (Object o : array) { 
	        sb.append(toJson(o)); 
	        sb.append(','); 
	    } 
	    // 将最后添加的 ',' 变为 ']': 
	    sb.setCharAt(sb.length()-1, ']'); 
	    return sb.toString(); 
	} 
	
	public  static String list2Json(List list) { 
	    if (list.size()==0) 
	        return "[]"; 
	    StringBuilder sb = new StringBuilder(list.size() << 4); 
	    sb.append('['); 
	    for (Object o : list) { 
	        sb.append(toJson(o)); 
	        sb.append(','); 
	    } 
	    // 将最后添加的 ',' 变为 ']': 
	    sb.setCharAt(sb.length()-1, ']'); 
	    return sb.toString(); 
	}
	
	public static String number2Json(Number number) { 
		return number.toString(); 
	} 

	public static String boolean2Json(Boolean bool) { 
		return bool.toString(); 
	}
	
	public static String timestamp2Json(Timestamp time) { 
		return "\"" + time.toString() + "\""; 
	}

	
	public static String toJson(Object o) { 
		if (o==null) 
		    return "null"; 
		if (o instanceof String) 
		    return string2Json((String)o); 
		if (o instanceof Boolean) 
		    return boolean2Json((Boolean)o); 
		if (o instanceof Number) 
		    return number2Json((Number)o); 
		if (o instanceof Map) 
		    return map2Json((Map<String, Object>)o); 
		if (o instanceof Object[]) 
		    return array2Json((Object[])o); 
		if (o instanceof Timestamp) {
			return timestamp2Json((Timestamp) o);
		}
		throw new RuntimeException("Unsupported type: " + o.getClass().getName()); 
	} 


	
	public static void main(String[] args) {
		String s = "sssssssss";
		System.out.print(string2Json(s));
		
		Timestamp time = new Timestamp(System.currentTimeMillis());
		System.out.println(timestamp2Json(time));
	}
}
?

三、js文件关键代码:

?

$.post("searchNeUpPopAction.do",
{
	oper :"region",
	cityIds :cityIds,
	subType :type
},
function(data) {
	var $div = $("#regionDiv");
	var html = "<table><tr><td><input type=\"checkbox\" name=\"regionCheckBox\" onclick=\"selectRegion(1,'"
			+ type
			+ "');\" value=\"0\" title=\"未知区域\">未知区域</td></tr>";
	var jsonObj = eval("(" + data + ")");

	for ( var i = 0; i < jsonObj.length; i++) {
		html += "		<tr><td><input type=\"checkbox\" name=\"regionCheckBox\" onclick=\"selectRegion(1,'"
				+ type
				+ "');\" value=\""
				+ jsonObj[i].id
				+ "\">" + jsonObj[i].name + "</td></tr>";
	}
});
  相关解决方案