Why even load that initial table from a DB (that table with the city names)? That is wasteful and should be discouraged. The more you read from the Database, the more resources will be needed. Use JSON and read the table content from the JSON file (just in case it will have to be modified) then use the modal to load the other stuff from the Database.
The speed it's going to take to do the database lookup vs a json file is neglible and with a database you have all your data in one place.
That the OP is looking to do this themselves indicates that there isn't budget for a more qualified developer to do it. This means that it's probably not a 'high priority' site with a lot of queries per second.
Plus now OP would need to identify all other places that the country is being used and change that to read from a json file instead of the existing database lookup.
Or maybe they use the json file in this one instance and keep the database table for any other references to country. But then they modify the table and forget about the file becasue it's 2 years down the line and now you have your 2 'data sources' out of sync.
TLDR:
Don't use a JSON file in this instance..

