Why convert spreadsheets to JSON
Item stats, enemy waves, dialogue, shop prices and level settings are easiest to balance in a spreadsheet, where you can sort, sum and compare. Games read JSON. Copying values by hand breaks things, and plain CSV turns every number into text. This converter keeps the types, builds nested objects and lists, and checks the data before it reaches your game.
Typed headers
Add a type after a colon in the header row. int and float must be numbers, bool accepts true, false, yes, no, 1 and 0, and a type ending in [] splits the cell into a list. enum(a|b|c) allows only those values, so a typo like "rrae" is caught. ref(items) checks that the value is a key in the items sheet, so every enemy drop points to an item that exists. A dot in a header like stats.hp makes a nested object. Columns without a type are guessed from their values.
Using it in Unity and Godot
Unity's JsonUtility cannot read a list at the top level, so the Pro C# loader wraps it for you and builds a dictionary by key. Put the JSON in a Resources folder or assign it as a TextAsset. In Godot 4, the generated class loads the JSON once, keeps the rows and lets you look them up by key. Godot reads every JSON number as a float, so the class turns integer keys back into int.
Is my data uploaded?
No. Files are read in your browser, including .xlsx, and nothing is sent anywhere.