package jalview.util;
-import org.json.simple.JSONArray;
+import jalview.javascript.json.JSON;
+
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.util.List;
+
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
public class JSONUtils
{
* @param jsonArray
* @return
*/
- public static String arrayToList(JSONArray jsonArray)
+ public static String arrayToStringList(List<Object> jsonArray)
{
- if (jsonArray == null)
+ int n;
+
+ if (jsonArray == null || (n = jsonArray.size()) == 0)
{
return null;
}
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < jsonArray.size(); i++)
+ /**
+ * @j2sNative
+ *
+ * return jsonArray.elementData.slice(0, n).join(",");
+ */
{
- if (i > 0)
- {
- sb.append(",");
- }
- sb.append(jsonArray.get(i).toString());
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < n; i++)
+ {
+ if (i > 0)
+ {
+ sb.append(",");
+ }
+ sb.append(jsonArray.get(i).toString());
+ }
+ return sb.toString();
}
- return sb.length() == 0 ? null : sb.toString();
+ }
+
+ /**
+ * The method all JSON parsing must go through for JavaScript.
+ * @param r a BufferedReader or a javascript.json.JSON.JSONReader
+ * @return
+ * @throws IOException
+ * @throws ParseException
+ */
+ public static Object parse(Reader r) throws IOException, ParseException
+ {
+ // Using a file reader is not currently supported in SwingJS JavaScript
+
+ if (r == null)
+ return null;
+//
+// Platform.timeCheck("JSONUtils.parse0 ", Platform.TIME_MARK);
+
+ Object ret;
+ if (Platform.isJS())
+ {
+ if (r instanceof FileReader)
+ {
+ throw new IOException("StringJS does not support FileReader parsing for JSON -- but it could...");
+ }
+ return JSON.parse(r);
+ } else {
+ ret = new JSONParser().parse(r);
+ }
+// Platform.timeCheck("JSONUtils.parse1 ", Platform.TIME_MARK);
+ return ret;
+ }
+
+ public static Object parse(String json) throws ParseException
+ {
+ return (Platform.isJS() ? JSON.parse(json) : new JSONParser().parse(json));
}
}