code: protected static String valueToString(Object value) throws JSONException {
  		if (value == null || value instanceof JSONNull) {
  			return "null";
  		}
  		if (value instanceof JSONString) {
  			try {
  				return ((JSONString) value).toJSONString();
  			} catch (Exception e) {
  				throw new JSONException(e);
  			}
  		} else if (value instanceof Number) {
  			return NumberUtil.toStr((Number) value);
  		} else if (value instanceof Boolean || value instanceof JSONObject || value instanceof JSONArray) {
  			return value.toString();
  		} else if (value instanceof Map) {
  			Map<?, ?> map = (Map<?, ?>) value;
  			return new JSONObject(map).toString();
  		} else if (value instanceof Collection) {
  			Collection<?> coll = (Collection<?>) value;
  			return new JSONArray(coll).toString();
  		} else if (value.getClass().isArray()) {
  			return new JSONArray(value).toString();
  		} else {
  			return JSONUtil.quote(value.toString());
  		}
  	}
docs: 值转为String，用于JSON中。 If the object has an value.toJSONString() method, then that method will be used to produce the JSON text. <br>
  The method is required to produce a strictly conforming text. <br>
  If the object does not contain a toJSONString method (which is the most common case), then a text will be produced by other means. <br>
  If the value is an array or Collection, then a JSONArray will be made from it and its toJSONString method will be called. <br>
  If the value is a MAP, then a JSONObject will be made from it and its toJSONString method will be called. <br>
  Otherwise, the value's toString method will be called, and the result will be quoted.<br>
  
  @param value 需要转为字符串的对象
  @return 字符串
  @throws JSONException If the value is or contains an invalid number.