package org.ztemplates.yui;
import java.util.Collection;
import java.util.Map;
public class YJSON
{
private final Object value;
private final String json;
public YJSON(final Object value)
{
super();
this.value = value;
json = computeString(value);
}
public static String computeString(Object value)
{
if (value instanceof String)
{
return "\"" + value + "\"";
}
else if (value.getClass().isArray())
{
Object[] arr = (Object[]) value;
return computeString(arr);
}
else if (value instanceof Map)
{
Map<String, Object> map = (Map<String, Object>) value;
return computeString(map);
}
else if (value instanceof Collection)
{
Collection coll = (Collection) value;
return computeString(coll.toArray());
}
else
{
return value.toString();
}
}
private static String computeString(Map<String, Object> value)
{
StringBuffer sb = new StringBuffer();
boolean first = true;
sb.append('{');
for (Map.Entry<String, Object> en : value.entrySet())
{
if (!first)
{
sb.append(", ");
}
else
{
first = false;
}
sb.append(en.getKey() + ": " + YJSON.computeString(en.getValue()));
}
sb.append('}');
return sb.toString();
}
private static String computeString(Object[] arr)
{
StringBuffer sb = new StringBuffer();
sb.append("[");
for (int i = 0; i < arr.length; i++)
{
if (i > 0)
{
sb.append(", ");
}
sb.append(computeString(arr[i]));
}
sb.append("]");
return sb.toString();
}
public String toString()
{
return json;
}
public String getJson()
{
return json;
}
public Object getValue()
{
return value;
}
}
|