The obvious answer, of course, is not to do the unchecked cast.
If it's absolutely necessary, then at least try to limit the scope of the @SuppressWarningsannotation. According to its Javadocs, it can go on local variables; this way, it doesn't even affect the entire method.
Map<String, String> myMap = (Map<String, String>) deserializeMap();
There is no way to determine whether the Map really should have the generic parameters <String, String>. You must know beforehand what the parameters should be (or you'll find out when you get a ClassCastException). This is why the code generates a warning, because the compiler can't possibly know whether is safe.