Good to see people coming to the same conclusions we have had for a while using Clojure. There's an up and coming runtime data validation framework called Malli that I use for these sorts of files.
You can get many of the benefits but also run custom validations (dictate how two keys in a map relate to eachother, or force a be of a certain shape instead of just a string).
Here's the example from the script: [0]
[0] - https://malli.io/?value=%7B%20%3Alocale%20%22en-US%22%0A%20%...