I'm not sure if the OP is still struggling with this or not. I just found out in the above reply that -300 is fine to import, but -320 is not fine. I'm not familiar with the concept op denormalized numbers; but a quick look at Wiki gave me some ideas what it is. There seems to be some 'range' of small numbers that import can't handle:
Table[
{i, Check[ImportString[ExportString[{"Test" -> 1.0 10^-i}, "JSON"], "JSON"], "Fail"]}
,
{i, 280, 330}
] // Grid
Any smaller exponent is just imported as '0.' It might, indeed, be related to these denormalized numbers, as it is at the 'end' of the small numbers. A Trace of such an import is very hard to read ;-)