Merge branch 'releases/Release_2_11_3_Branch'
[jalview.git] / src / jalview / util / JSONUtils.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.util;
22
23 import java.io.IOException;
24 import java.io.Reader;
25 import java.util.List;
26
27 import org.json.simple.parser.ParseException;
28
29 public class JSONUtils
30 {
31
32   /**
33    * Converts a JSONArray of values to a string as a comma-separated list.
34    * Answers null if the array is null or empty.
35    * 
36    * @param jsonArray
37    * @return
38    */
39   public static String arrayToStringList(List<Object> jsonArray)
40   {
41     int n;
42
43     if (jsonArray == null || (n = jsonArray.size()) == 0)
44     {
45       return null;
46     }
47
48     /**
49      * BH TODO to Platform?
50      * 
51      * @j2sNative
52      * 
53      *            return jsonArray.elementData.slice(0, n).join(",");
54      */
55     {
56       StringBuilder sb = new StringBuilder();
57       for (int i = 0; i < n; i++)
58       {
59         if (i > 0)
60         {
61           sb.append(",");
62         }
63         sb.append(jsonArray.get(i).toString());
64       }
65       return sb.toString();
66     }
67   }
68
69   /**
70    * The method all JSON parsing must go through for JavaScript.
71    * 
72    * @param r
73    *          a BufferedReader or a javascript.json.JSON.JSONReader
74    * @return
75    * @throws IOException
76    * @throws ParseException
77    */
78   public static Object parse(Reader r) throws IOException, ParseException
79   {
80     return Platform.parseJSON(r);
81   }
82
83   public static Object parse(String json) throws ParseException
84   {
85     return Platform.parseJSON(json);
86   }
87
88   public static String stringify(Object obj)
89   {
90     return new org.json.JSONObject(obj).toString();
91   }
92
93 }