X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Futil%2FJSONUtils.java;fp=src%2Fjalview%2Futil%2FJSONUtils.java;h=f91275dd4791ad8a6155076cef5cf3953baddc5b;hb=d2f616a89def59116b4a4f8d80251138d2c1da3d;hp=cdfc88e4a248bf93c384f2803153313797da6097;hpb=2bb7601808ced07567ddccd02ec1c2a9ad5cc7ab;p=jalview.git diff --git a/src/jalview/util/JSONUtils.java b/src/jalview/util/JSONUtils.java index cdfc88e..f91275d 100644 --- a/src/jalview/util/JSONUtils.java +++ b/src/jalview/util/JSONUtils.java @@ -1,6 +1,14 @@ 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 { @@ -12,23 +20,68 @@ public class JSONUtils * @param jsonArray * @return */ - public static String arrayToList(JSONArray jsonArray) + public static String arrayToStringList(List 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)); } }