Storing level creation data

Hey folks!

I’m looking for a better way to create, save and load the levels for my game. Currently, this is the information I need to create one level:

Code
[1] = {
  map       = "map1",
  spawnData = {
    maxDensity = 100,
    time       = 3*60*1000000000,
    interval   = {
      delay     = 2000,
      variation = 1000,
    },

    enemies = {
      virus = {
        level  = 1,
        weight = 1
      },
      floatingVirus = {
        level  = 1,
        weight = 1
      },
      splitting = {
        level  = 1,
        weight = 1
      },
      tank = {
        level  = 1,
        weight = 1
      },
      runner = {
        level  = 1,
        weight = 1
      },
      teleporting = {
        level  = 1,
        weight = 1
      },
    },

The way I usually work around this is creating a google sheets and exporting to json, it is very friendly for non-coders, visual and easy to edit and work around, but also very limited and annoying for more complex data.

I guess I may have to use something like SQL, but I’m curious to see if there is any other way to approach this.

I use Excel for config data and my workbook has many sheets with each being thousands of lines long and 80+ fields deep. It handles nested data too.

I use a macro to dump it out to JSON. Works just fine for me and so much easier to tweak values in Excel.

Do you use the same single macro for all of them, or do you create a new one for every kind of sheet you have?

Because my main problem is actually nested data, the current macro I use just recognizes the first row as the key and everything below as it’s content.