Оформи код соответствующим тэгом
День добрый. Помогите пожалуйста, второй день ковыряюсь не могу въехать в чем косяк.
Задача такая. на SPIFFS имеется файл test.json с уже какими то записями формата
"data": {
"name": [
"PRIVET"
],
"surname": [
"MEDVED"
]
}
}
И нужно при допустим нажатии кнопки добавлять в этот файл данные из переменных.
вот код моей функции
Так вот если только залить новый файл json с какими то данными и первый раз выполнить эту функцию, то все работает как надо, в конец каждого ключа массива дописывается данные из переменных функции,
вот такого вида получается. Но мне так не надо.
Очень прошу помощи. И прошу сильно не пинать если кому то покажется этот код убогим.
Поверьте я много чего перепробовал.
Задача такая. на SPIFFS имеется файл test.json с уже какими то записями формата
"data": {
"name": [
"PRIVET"
],
"surname": [
"MEDVED"
]
}
}
И нужно при допустим нажатии кнопки добавлять в этот файл данные из переменных.
вот код моей функции
void writejson(String valueName, String valueSurname){
DynamicJsonDocument doc1(1024);
File file = SPIFFS.open("/test.json", "r");
DeserializationError error = deserializeJson(doc1, file);
if (error) {
Serial.print(F("deserializeJson() Error: "));
Serial.println(error.f_str());
return;
}
file.close();
const char* name;
recname=doc1["name"].size();
const char* surname
recsur=doc1["surname"].size();
DynamicJsonDocument doc2(1024);
JsonObject root = doc2.to<JsonObject>();
JsonObject data = root.createNestedObject("data");
for(int i=0; i<recname; i++ ){
name = doc1["name"];
data["name"].add(name);
}
data["name"].add(valueName);
for(int n=0; n<recpass; n++ ){
surname = doc1["surname"][n];
data["surname"].add(surname);
}
data["surname"].add(valueSurname);
file = SPIFFS.open("/test.json", "w");
if (serializeJsonPretty(root, file)){
Serial.println("Ништяк, файлик записан");
}else {
Serial.print ("Не могу записать файл, прости хозяин!!");
}
file.close();
}
DynamicJsonDocument doc1(1024);
File file = SPIFFS.open("/test.json", "r");
DeserializationError error = deserializeJson(doc1, file);
if (error) {
Serial.print(F("deserializeJson() Error: "));
Serial.println(error.f_str());
return;
}
file.close();
const char* name;
recname=doc1["name"].size();
const char* surname
recsur=doc1["surname"].size();
DynamicJsonDocument doc2(1024);
JsonObject root = doc2.to<JsonObject>();
JsonObject data = root.createNestedObject("data");
for(int i=0; i<recname; i++ ){
name = doc1["name"];
data["name"].add(name);
}
data["name"].add(valueName);
for(int n=0; n<recpass; n++ ){
surname = doc1["surname"][n];
data["surname"].add(surname);
}
data["surname"].add(valueSurname);
file = SPIFFS.open("/test.json", "w");
if (serializeJsonPretty(root, file)){
Serial.println("Ништяк, файлик записан");
}else {
Serial.print ("Не могу записать файл, прости хозяин!!");
}
file.close();
}
Так вот если только залить новый файл json с какими то данными и первый раз выполнить эту функцию, то все работает как надо, в конец каждого ключа массива дописывается данные из переменных функции,
"data": {
"name": [
"PRIVET",
"Pjfdfg"
],
"surname": [
"MEDVED",
"ghjkl"
]
}
}
Но если еще раз выполнить эту функцию, то уже файл просто перезаписывается только с данными из переменных,
"data": {
"name": [
"Pjfdfg"
],
"surname": [
"ghjkl"
]
}
}
и если еще раз выполнить функцию то опять перезаписывает не добавляя данные а перезаписывая новые.
"data": {
"name": [
"Pjfdfg"
],
"surname": [
"ghjkl"
]
}
}
Если открыть файл с ключом "a", то данные дописываются в конец
"data": {
"name": [
"Pjfdfg"
],
"surname": [
"ghjkl"
]
}
}
"data": {
"name": [
"Pjfdfg"
],
"surname": [
"ghjkl"
]
}
}
"name": [
"PRIVET",
"Pjfdfg"
],
"surname": [
"MEDVED",
"ghjkl"
]
}
}
Но если еще раз выполнить эту функцию, то уже файл просто перезаписывается только с данными из переменных,
"data": {
"name": [
"Pjfdfg"
],
"surname": [
"ghjkl"
]
}
}
и если еще раз выполнить функцию то опять перезаписывает не добавляя данные а перезаписывая новые.
"data": {
"name": [
"Pjfdfg"
],
"surname": [
"ghjkl"
]
}
}
Если открыть файл с ключом "a", то данные дописываются в конец
"data": {
"name": [
"Pjfdfg"
],
"surname": [
"ghjkl"
]
}
}
"data": {
"name": [
"Pjfdfg"
],
"surname": [
"ghjkl"
]
}
}
Очень прошу помощи. И прошу сильно не пинать если кому то покажется этот код убогим.
Поверьте я много чего перепробовал.
Изменено: