You will be limited by FString and not variable count. The summed length of the data + quotation marks, commas and curly brackets is really the limit.
Though the longer your string the more calculations will go into parsing / building back and forth between JSON and FString.
Main question is why would you need 500+ variables inside of a single struct? Are you making the right design choices?
Maybe some of this should be split into actors and serialized into a save file?
If you are basically trying to create a database then why not just use one?
You could go the route of a file database via SQLite for something like this (better than datatables because it can be modified at runtime)
Tutorial on using SQLite with Unreal. It’s an external link: