/// <summary>Reverse the JSONML transformation, making an XML text from a JSONArray.</summary> /// <param name="ja">A JSONArray.</param> /// <returns>An XML string.</returns> /// <exception cref="JSONException"/> /// <exception cref="org.json.JSONException"/> public static string ToString(org.json.JSONArray ja) { int i; org.json.JSONObject jo; string key; System.Collections.Generic.IEnumerator<string> keys; int length; object @object; System.Text.StringBuilder sb = new System.Text.StringBuilder(); string tagName; string value; // Emit <tagName tagName = ja.GetString(0); org.json.XML.NoSpace(tagName); tagName = org.json.XML.Escape(tagName); sb.Append('<'); sb.Append(tagName); @object = ja.Opt(1); if (@object is org.json.JSONObject) { i = 2; jo = (org.json.JSONObject)@object; // Emit the attributes keys = jo.Keys(); while (keys.HasNext()) { key = keys.Next(); org.json.XML.NoSpace(key); value = jo.OptString(key); if (value != null) { sb.Append(' '); sb.Append(org.json.XML.Escape(key)); sb.Append('='); sb.Append('"'); sb.Append(org.json.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 is string) { sb.Append(org.json.XML.Escape(@object.ToString())); } else { if (@object is org.json.JSONObject) { sb.Append(ToString((org.json.JSONObject)@object)); } else { if (@object is org.json.JSONArray) { sb.Append(ToString((org.json.JSONArray)@object)); } else { sb.Append(@object.ToString()); } } } } } while (i < length); sb.Append('<'); sb.Append('/'); sb.Append(tagName); sb.Append('>'); } return sb.ToString(); }
/// <summary> /// Produce a comma delimited text from a JSONArray of JSONObjects using /// a provided list of names. /// </summary> /// <remarks> /// Produce a comma delimited text from a JSONArray of JSONObjects using /// a provided list of names. The list of names is not included in the /// output. /// </remarks> /// <param name="names">A JSONArray of strings.</param> /// <param name="ja">A JSONArray of JSONObjects.</param> /// <returns>A comma delimited text.</returns> /// <exception cref="JSONException"/> /// <exception cref="org.json.JSONException"/> public static string ToString(org.json.JSONArray names, org.json.JSONArray ja) { if (names == null || names.Length() == 0) { return null; } System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < ja.Length(); i += 1) { org.json.JSONObject jo = ja.OptJSONObject(i); if (jo != null) { sb.Append(RowToString(jo.ToJSONArray(names))); } } return sb.ToString(); }
/// <summary> /// Produce a JSONArray of JSONObjects from a comma delimited text string /// using a supplied JSONArray as the source of element names. /// </summary> /// <param name="names">A JSONArray of strings.</param> /// <param name="x">A JSONTokener of the source text.</param> /// <returns>A JSONArray of JSONObjects.</returns> /// <exception cref="JSONException"/> /// <exception cref="org.json.JSONException"/> public static org.json.JSONArray ToJSONArray(org.json.JSONArray names, org.json.JSONTokener x) { if (names == null || names.Length() == 0) { return null; } org.json.JSONArray ja = new org.json.JSONArray(); for (; ; ) { org.json.JSONObject jo = RowToJSONObject(names, x); if (jo == null) { break; } ja.Put(jo); } if (ja.Length() == 0) { return null; } return ja; }
/// <summary>Produce a comma delimited text row from a JSONArray.</summary> /// <remarks> /// Produce a comma delimited text row from a JSONArray. Values containing /// the comma character will be quoted. Troublesome characters may be /// removed. /// </remarks> /// <param name="ja">A JSONArray of strings.</param> /// <returns>A string ending in NEWLINE.</returns> public static string RowToString(org.json.JSONArray ja) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); 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[0] == '"')) { sb.Append('"'); int length = @string.Length; for (int j = 0; j < length; j += 1) { char c = @string[j]; if (c >= ' ' && c != '"') { sb.Append(c); } } sb.Append('"'); } else { sb.Append(@string); } } } sb.Append('\n'); return sb.ToString(); }
/// <summary>Get an array of field names from a JSONObject.</summary> /// <returns>An array of field names, or null if there are no names.</returns> public static string[] GetNames(org.json.JSONObject jo) { int length = jo.Length(); if (length == 0) { return null; } System.Collections.Generic.IEnumerator<string> iterator = jo.Keys(); string[] names = new string[length]; int i = 0; while (iterator.HasNext()) { names[i] = iterator.Next(); i += 1; } return names; }
/// <summary> /// Produce a JSONArray containing the values of the members of this /// JSONObject. /// </summary> /// <param name="names"> /// A JSONArray containing a list of key strings. This determines /// the sequence of the values in the result. /// </param> /// <returns>A JSONArray of values.</returns> /// <exception cref="JSONException">If any of the values are non-finite numbers.</exception> /// <exception cref="org.json.JSONException"/> public virtual org.json.JSONArray ToJSONArray(org.json.JSONArray names) { if (names == null || names.Length() == 0) { return null; } org.json.JSONArray ja = new org.json.JSONArray(); for (int i = 0; i < names.Length(); i += 1) { ja.Put(this.Opt(names.GetString(i))); } return ja; }