/* * $Id: JSONObject.java,v 1.1 2006/04/15 14:10:48 platform Exp $ * Created on 2006-4-10 */ package org.zkoss.json; import java.util.LinkedHashMap; import java.util.Iterator; import java.util.Map; /** * A JSON object. Key value pairs are in the order of adding. * JSONObject supports java.util.Map interface. * * @author FangYidong<fangyidong@yahoo.com.cn> */ public class JSONObject extends LinkedHashMap<Object, Object> implements Map<Object, Object>, JSONAware { private static final long serialVersionUID = -503443796854799292L; /** * Convert (aka., encode) a map to JSON text. The result is a JSON object. * If this map is also a JSONAware, JSONAware specific behaviors will be omitted at this top level. * * @see JSONValue#toJSONString(Object) * * @param map * @return JSON text, or "null" if map is null. */ public static String toJSONString(Map map){ if(map == null) return "null"; StringBuffer sb = new StringBuffer(); boolean first = true; Iterator iter=map.entrySet().iterator(); sb.append('{'); while(iter.hasNext()){ if(first) first = false; else sb.append(','); Map.Entry entry=(Map.Entry)iter.next(); toJSONString(String.valueOf(entry.getKey()),entry.getValue(), sb); } sb.append('}'); return sb.toString(); } /** Encodes this object to a JSON string. * It is the same as {@link #toString()}. */ public String toJSONString(){ return toJSONString(this); } private static String toJSONString(String key,Object value, StringBuffer sb){ sb.append('\"'); if(key == null) sb.append("null"); else JSONValue.escape(key, sb); sb.append('\"').append(':'); sb.append(JSONValue.toJSONString(value)); return sb.toString(); } /** Encodes this object to a JSON string. * It is the same as {@link #toJSONString()}. */ public String toString(){ return toJSONString(); } public static String toString(String key,Object value){ StringBuffer sb = new StringBuffer(); toJSONString(key, value, sb); return sb.toString(); } }