I don't like this one very much, as we will return a partially defined cache if there is a `JSONException` while decoding a field. It means that the filled fields we get depend on the order of the setters above, which is ugly. Maybe it would be best to let the exception propagate.