1 package host.exp.exponent.notifications.schedulers
2 
3 import org.json.JSONArray
4 import org.json.JSONException
5 import org.json.JSONObject
6 import java.util.HashMap
7 
8 object HashMapSerializer {
serializenull9   fun serialize(map: Map<String, Any>): String {
10     val serialized = JSONObject(map)
11     return serialized.toString()
12   }
13 
14   @Throws(JSONException::class)
deserializenull15   fun deserialize(serializedMap: String?): HashMap<String, Any>? {
16     if (serializedMap == null) {
17       return null
18     }
19 
20     val serialized: JSONObject? = try {
21       JSONObject(serializedMap)
22     } catch (e: JSONException) {
23       e.printStackTrace()
24       null
25     }
26     return jsonToMap(serialized)
27   }
28 
29   @Throws(JSONException::class)
jsonToMapnull30   fun jsonToMap(json: JSONObject?): HashMap<String, Any> {
31     return if (json !== null && json !== JSONObject.NULL) {
32       toMap(json)
33     } else {
34       hashMapOf()
35     }
36   }
37 
38   @Throws(JSONException::class)
toMapnull39   fun toMap(obj: JSONObject): HashMap<String, Any> {
40     val map = hashMapOf<String, Any>()
41     val keysItr = obj.keys()
42     while (keysItr.hasNext()) {
43       val key = keysItr.next()
44       var value = obj[key]
45       if (value is JSONArray) {
46         value = toList(value)
47       } else if (value is JSONObject) {
48         value = toMap(value)
49       }
50       map[key] = value
51     }
52     return map
53   }
54 
55   @Throws(JSONException::class)
toListnull56   fun toList(array: JSONArray): List<Any> {
57     val list = mutableListOf<Any>()
58     for (i in 0 until array.length()) {
59       var value = array[i]
60       if (value is JSONArray) {
61         value = toList(value)
62       } else if (value is JSONObject) {
63         value = toMap(value)
64       }
65       list.add(value)
66     }
67     return list
68   }
69 }
70