YJSON.java :  » Web-Framework » ztemplates » org » ztemplates » yui » Java Open Source

Java Open Source » Web Framework » ztemplates 
ztemplates » org » ztemplates » yui » YJSON.java
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;
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.