code: public static void put(Writer writer, Object value) throws IOException {
  		if (value == null) {
  			writer.write("null");
  		} else if (value instanceof String) {
  			put(writer, (String) value);
  		} else if (value instanceof Boolean) {
  			put(writer, (boolean) (Boolean) value);
  		} else if (value instanceof Byte) {
  			put(writer, (long) (Byte) value);
  		} else if (value instanceof Short) {
  			put(writer, (long) (Short) value);
  		} else if (value instanceof Integer) {
  			put(writer, (long) (Integer) value);
  		} else if (value instanceof Long) {
  			put(writer, (long) (Long) value);
  		} else if (value instanceof Float) {
  			put(writer, (double) (Float) value);
  		} else if (value instanceof Double) {
  			put(writer, (double) (Double) value);
  		} else if (value instanceof Date) {
  			put(writer, (Date) value);
  		} else if (value instanceof JsonHash) {
  			JsonHash jsonHash = (JsonHash) value;
  			jsonHash.toJson(writer);
  		} else if (value instanceof JsonArray) {
  			JsonArray jsonArray = (JsonArray) value;
  			jsonArray.toJson(writer);
  		} else {
  			throw new IllegalStateException("unknown class. class="
  					+ value.getClass().getCanonicalName());
  		}
  	}
docs: Writes the given object.<br>
  Supported types are: {@link String} {@link Boolean} {@link Long} {@link Double} {@link JsonHash} {@link JsonArray}.<br>
  An {@link IllegalStateException} will be thrown if the given object has an unsupported type.
  @param writer
  @param value
  @throws IOException
  @author vvakame