Ah, this can be illustrated with this image:
JSONtext does not follow the common error rule of returning default value on any error. Instead, it returns best-efforts, with only sub-elements that produce errors being returned as the supplied default. Here it is only the "B" element, requested as a Float but a String in the JSON, that is returned as default (as explained in the error message).
Thus we are doing the Variant-to-Data even on error, in order to get this partial conversion of JSON to Data.