The ArduinoJson.org/v6/Assistant will do most of the code writing for you. Here is a way to make your original "array of structures work:
{
"modules": [
{
"modulesrno": 0,
"moduleID": "123456",
"moduletype": "M41",
"moduleNRFID": "1"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 2,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "3"
},
{
"modulesrno": 3,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 4,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 5,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 6,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 7,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 8,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
},
{
"modulesrno": 1,
"moduleID": "123457",
"moduletype": "M42",
"moduleNRFID": "2"
}
]
}
#include <ArduinoJson.h>
#include <LittleFS.h>
struct ConfigModule
{
signed int modulesrno;
// String moduletimestamp;
String moduleID;
// String moduleplacename;
// String moduleplaceID;
// String moduleroomname;
// String moduleroomID;
String moduletype;
String moduleNRFID;
} configmod[30];
StaticJsonDocument<3072> doc;
void setup()
{
Serial.begin(115200);
delay(200);
// always use this to "mount" the filesystem
bool result = LittleFS.begin();
Serial.println("LittleFS opened: " + result);
File file = LittleFS.open("/configmod.json", "r");
if (!file) return;
DeserializationError error = deserializeJson(doc, file);
if (error)
{
Serial.print(F("deserializeJson() failed: "));
Serial.println(error.f_str());
return;
}
for (JsonObject module : doc["modules"].as<JsonArray>())
{
int srno = module["modulesrno"];
configmod[srno].modulesrno = srno;
configmod[srno].moduleID = module["moduleID"].as<String>();
configmod[srno].moduletype = module["moduletype"].as<String>();
configmod[srno].moduleNRFID = module["moduleNRFID"].as<String>();
}
}
void loop() {}