package jalview.util; 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 { /** * Converts a JSONArray of values to a string as a comma-separated list. * Answers null if the array is null or empty. * * @param jsonArray * @return */ public static String arrayToStringList(List jsonArray) { int n; if (jsonArray == null || (n = jsonArray.size()) == 0) { return null; } /** * @j2sNative * * return jsonArray.elementData.slice(0, n).join(","); */ { 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(); } } /** * 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)); } }