Well, the main problem with imports is that there will be bad and incorrect data in them. That key, that is an integer 99.9% of the time... And I did manage to circumvent most 'illegal conversion errors' by now. Getting the data into a Variant isn't the problem. The problem is assigning the value inside to something typed.
Also, instead of using "upserts" to simply insert the data in large transactions, as was my first intent, that really only works if there are no other queries you want to run in the mean time. Like, looking up key values, moving things from one table to the other, or a lot of other things. Most of the time, after an insert, you need to know the value of the autoincrement key, which requires a commit anyway.
Again, the problem isn't the JSON, that was just an example. There are very many different formats. JSON is a very recent one. It's a small minority overall. CSV variants are probably the most common format. There are plenty that made up their own format. And some are just a bunch of obscure database files without a known format, which have to be deciphered.
But thanks for all the advice!