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