示例#1
0
 /**
  * Produce a comma delimited text row from a JSONArray. Values containing the comma character will
  * be quoted.
  *
  * @param ja A JSONArray of strings.
  * @return A string ending in NEWLINE.
  */
 public static String rowToString(JSONArray ja) {
   StringBuffer sb = new StringBuffer();
   for (int i = 0; i < ja.length(); i += 1) {
     if (i > 0) {
       sb.append(',');
     }
     Object o = ja.opt(i);
     if (o != null) {
       String s = o.toString();
       if (s.indexOf(',') >= 0) {
         if (s.indexOf('"') >= 0) {
           sb.append('\'');
           sb.append(s);
           sb.append('\'');
         } else {
           sb.append('"');
           sb.append(s);
           sb.append('"');
         }
       } else {
         sb.append(s);
       }
     }
   }
   sb.append('\n');
   return sb.toString();
 }
示例#2
0
    /**
	 * Produce a comma delimited text row from a JSONArray. Values containing
	 * the comma character will be quoted. Troublesome characters may be 
	 * removed.
	 * @param ja A JSONArray of strings.
	 * @return A string ending in NEWLINE.
	 */
	public static String rowToString(JSONArray ja) {
	    StringBuffer sb = new StringBuffer();
	    for (int i = 0; i < ja.length(); i += 1) {
	        if (i > 0) {
	            sb.append(',');
	        }
	        Object object = ja.opt(i);
	        if (object != null) {
	            String string = object.toString();
	            if (string.length() > 0 && (string.indexOf(',') >= 0 || 
	            		string.indexOf('\n') >= 0 || string.indexOf('\r') >= 0 || 
	            		string.indexOf(0) >= 0 || string.charAt(0) == '"')) {
	                sb.append('"');
	            	int length = string.length();
	            	for (int j = 0; j < length; j += 1) {
	            		char c = string.charAt(j);
	            		if (c >= ' ' && c != '"') {
	            			sb.append(c);
	            		}
	                }
	                sb.append('"');
	            } else {
	                sb.append(string);
	            }
	        }
	    }
	    sb.append('\n');
	    return sb.toString();
	}
示例#3
0
  /**
   * Convert a JSONObject into a well-formed, element-normal XML string.
   *
   * @param object A JSONObject.
   * @param tagName The optional name of the enclosing tag.
   * @return A string.
   * @throws JSONException
   */
  public static String toString(Object object, String tagName) throws JSONException {
    StringBuffer sb = new StringBuffer();
    int i;
    JSONArray ja;
    JSONObject jo;
    String key;
    Iterator keys;
    int length;
    String string;
    Object value;
    if (object instanceof JSONObject) {

      // Emit <tagName>

      if (tagName != null) {
        sb.append('<');
        sb.append(tagName);
        sb.append('>');
      }

      // Loop thru the keys.

      jo = (JSONObject) object;
      keys = jo.keys();
      while (keys.hasNext()) {
        key = keys.next().toString();
        value = jo.opt(key);
        if (value == null) {
          value = "";
        }
        if (value instanceof String) {
          string = (String) value;
        } else {
          string = null;
        }

        // Emit content in body

        if ("content".equals(key)) {
          if (value instanceof JSONArray) {
            ja = (JSONArray) value;
            length = ja.length();
            for (i = 0; i < length; i += 1) {
              if (i > 0) {
                sb.append('\n');
              }
              sb.append(escape(ja.get(i).toString()));
            }
          } else {
            sb.append(escape(value.toString()));
          }

          // Emit an array of similar keys

        } else if (value instanceof JSONArray) {
          ja = (JSONArray) value;
          length = ja.length();
          for (i = 0; i < length; i += 1) {
            value = ja.get(i);
            if (value instanceof JSONArray) {
              sb.append('<');
              sb.append(key);
              sb.append('>');
              sb.append(toString(value));
              sb.append("</");
              sb.append(key);
              sb.append('>');
            } else {
              sb.append(toString(value, key));
            }
          }
        } else if ("".equals(value)) {
          sb.append('<');
          sb.append(key);
          sb.append("/>");

          // Emit a new tag <k>

        } else {
          sb.append(toString(value, key));
        }
      }
      if (tagName != null) {

        // Emit the </tagname> close tag

        sb.append("</");
        sb.append(tagName);
        sb.append('>');
      }
      return sb.toString();

      // XML does not have good support for arrays. If an array appears in a place
      // where XML is lacking, synthesize an <array> element.

    } else {
      if (object.getClass().isArray()) {
        object = new JSONArray(object);
      }
      if (object instanceof JSONArray) {
        ja = (JSONArray) object;
        length = ja.length();
        for (i = 0; i < length; i += 1) {
          sb.append(toString(ja.opt(i), tagName == null ? "array" : tagName));
        }
        return sb.toString();
      } else {
        string = (object == null) ? "null" : escape(object.toString());
        return (tagName == null)
            ? "\"" + string + "\""
            : (string.length() == 0)
                ? "<" + tagName + "/>"
                : "<" + tagName + ">" + string + "</" + tagName + ">";
      }
    }
  }
示例#4
0
  /**
   * Reverse the JSONML transformation, making an XML text from a JSONArray.
   *
   * @param ja A JSONArray.
   * @return An XML string.
   * @throws JSONException
   */
  public static String toString(JSONArray ja) throws JSONException {
    int i;
    JSONObject jo;
    String key;
    Iterator<String> keys;
    int length;
    Object object;
    StringBuilder sb = new StringBuilder();
    String tagName;
    String value;

    // Emit <tagName

    tagName = ja.getString(0);
    XML.noSpace(tagName);
    tagName = XML.escape(tagName);
    sb.append('<');
    sb.append(tagName);

    object = ja.opt(1);
    if (object instanceof JSONObject) {
      i = 2;
      jo = (JSONObject) object;

      // Emit the attributes

      keys = jo.keys();
      while (keys.hasNext()) {
        key = keys.next();
        XML.noSpace(key);
        value = jo.optString(key);
        if (value != null) {
          sb.append(' ');
          sb.append(XML.escape(key));
          sb.append('=');
          sb.append('"');
          sb.append(XML.escape(value));
          sb.append('"');
        }
      }
    } else {
      i = 1;
    }

    // Emit content in body

    length = ja.length();
    if (i >= length) {
      sb.append('/');
      sb.append('>');
    } else {
      sb.append('>');
      do {
        object = ja.get(i);
        i += 1;
        if (object != null) {
          if (object instanceof String) {
            sb.append(XML.escape(object.toString()));
          } else if (object instanceof JSONObject) {
            sb.append(toString((JSONObject) object));
          } else if (object instanceof JSONArray) {
            sb.append(toString((JSONArray) object));
          }
        }
      } while (i < length);
      sb.append('<');
      sb.append('/');
      sb.append(tagName);
      sb.append('>');
    }
    return sb.toString();
  }
示例#5
0
文件: XML.java 项目: pombredanne/xbib
  /**
   * Convert a JSONObject into a well-formed, element-normal XML string.
   *
   * @param o A JSONObject.
   * @param tagName The optional name of the enclosing tag.
   * @return A string.
   * @throws JSONException
   */
  public static String toString(Object o, String tagName) throws JSONException {
    StringBuffer b = new StringBuffer();
    int i;
    JSONArray ja;
    JSONObject jo;
    String k;
    Iterator<?> keys;
    int len;
    String s;
    Object v;
    if (o instanceof JSONObject) {

      // Emit <tagName>

      if (tagName != null) {
        b.append('<');
        b.append(tagName);
        b.append('>');
      }

      // Loop thru the keys.

      jo = (JSONObject) o;
      keys = jo.keys();
      while (keys.hasNext()) {
        k = keys.next().toString();
        v = jo.opt(k);
        if (v == null) {
          v = "";
        }
        if (v instanceof String) {
          s = (String) v;
        } else {
          s = null;
        }

        // Emit content in body

        if (k.equals("content")) {
          if (v instanceof JSONArray) {
            ja = (JSONArray) v;
            len = ja.length();
            for (i = 0; i < len; i += 1) {
              if (i > 0) {
                b.append('\n');
              }
              b.append(escape(ja.get(i).toString()));
            }
          } else {
            b.append(escape(v.toString()));
          }

          // Emit an array of similar keys

        } else if (v instanceof JSONArray) {
          ja = (JSONArray) v;
          len = ja.length();
          for (i = 0; i < len; i += 1) {
            v = ja.get(i);
            if (v instanceof JSONArray) {
              b.append('<');
              b.append(k);
              b.append('>');
              b.append(toString(v));
              b.append("</");
              b.append(k);
              b.append('>');
            } else {
              b.append(toString(v, k));
            }
          }
        } else if (v.equals("")) {
          b.append('<');
          b.append(k);
          b.append("/>");

          // Emit a new tag <k>

        } else {
          b.append(toString(v, k));
        }
      }
      if (tagName != null) {

        // Emit the </tagname> close tag

        b.append("</");
        b.append(tagName);
        b.append('>');
      }
      return b.toString();

      // XML does not have good support for arrays. If an array appears in a place
      // where XML is lacking, synthesize an <array> element.

    } else if (o instanceof JSONArray) {
      ja = (JSONArray) o;
      len = ja.length();
      for (i = 0; i < len; ++i) {
        v = ja.opt(i);
        b.append(toString(v, (tagName == null) ? "array" : tagName));
      }
      return b.toString();
    } else {
      s = (o == null) ? "null" : escape(o.toString());
      return (tagName == null)
          ? "\"" + s + "\""
          : (s.length() == 0)
              ? "<" + tagName + "/>"
              : "<" + tagName + ">" + s + "</" + tagName + ">";
    }
  }