public static Map<String,Object> stringToMap(String inComing){
        Map<String,Object> result = new HashMap<String,Object>();

        if(inComing == null) {
            return null;
        }

        JsonReader jsonReader = Json.createReader(new StringReader(inComing));
        JsonObject object = jsonReader.readObject();

        //iterate through map entries
        for(Map.Entry<String,JsonValue> entry : object.entrySet()) {
            String key = entry.getKey();
            JsonValue objV = entry.getValue();

            //determine if entry is a: Map, Array, or String
            switch(objV.getValueType()) {
                case OBJECT:
                    //Apparently this is bad?
                    System.out.println("got object");
                    break;
                case ARRAY:
                    List<Object> listObject = new ArrayList<Object>();
                    JsonArray array = (JsonArray) objV;

                    //iterate through items in array
                    for(JsonValue val : array) {
                        switch(val.getValueType()) {
                            case OBJECT:
                                //found a map, eg. the array is a TrackList and this is a Track
                                Map<String,Object> listMap = new HashMap<String,Object>();
                                JsonObject obj = (JsonObject) val;
                                for(String name : obj.keySet()) {
                                    listMap.put(name, obj.getString(name));
                                }
                                listObject.add(listMap);
                                break;
                            case STRING:
                                JsonString arrayString = (JsonString) val;
                                listObject.add(arrayString.getString());
                                break;
                        }
                    }

                    result.put(key, listObject);
                    break;
                case STRING:
                    JsonString st = (JsonString) objV;
                    result.put(key, st.getString());
                    break;
            }
        }

        return result;
    }