While yea JSON has some advantages like faster parsing, I liked the way I could design a compiling structure from my raw string data imported from CSV files, so far I have not had any problems with perfomance, so I sticking with it.
I needed a lot of data organized and the way I have done was through .CSV files, in the end everything worked as expected, however, later I runned into some minor issues.
-> When exporting the game, no .csv files were exported and the console would loop with errors like "Needs to be open before use", the problem was that I couldn't include .csv files format in the exported game in any way shape or form. The workaround was simply to rename them to .tres, which makes godot export them automatically, and I still could open them with spreadsheet programs.
-> When editing the files, the program that I used was locking them, and Godot couldn't run the game, which made a pain for testing the game, as I had to change the values that I needed, close the program, them test on Godot, open the spreadsheet later, edit, repeat. The solution was to duplicate the data folder outside of the project and run with a thirdparty program a simple folder sync to the godot project folder, so I could edit multiple data files, press a sync button, and test the game without worrying about closing the program.
Eventually you only need 1 single file for all data, you can discriminate multiple structures in 1 file. For example, you could just put a special character in the csv files that when compiling in Godot make it ignore the spreadsheat field if it contained that character. Something similar like my code but better imo:
if !LINECSV.has("#") and LINECSV != DATA_CSV.size()-1: #Compile data
This will make you able to split multiple data structures in one file, you could do say:
if DATA_CSV[LINECSV][0].has("WEAPON_"):
var WEAPON_ID = DATA_CSV[LINECSV][0] #Because it has WEAPON_ as prefix, the compile structure here can consider it as a weapon, you could do that with NPC_Data, MAP_Data, STAT_Data, SKILL_Data, or anything you want.
The key with compiling methods from the csv files was the string built-in functions in Godot, for example, I could split a string everytime it encoutered a '/' , and creates a array from that, or I could split between two numbers by ':' and consider them a vector2, then in my spreadsheet I could write values like: [32:64] and godot would read as Vector2(32,64).
It's really powerful what you can do with simple values in a spreadsheet, I seriously hope they implement in Godot a way to edit csv files directly, it's too dam powerful, we can make use of databanks for any purpose we want, and some games cannot be developed without them.