Итак, я пытаюсь создать массив, который выглядит следующим образом, чтобы я мог получить доступ к материалам, которые в нем проще. Я использую проект ESP32, и он использует библиотеку Json 6, по какой-то причине я не могу получить доступ к тому, что находится в массиве, который я создал, что я имею в виду, что это int id1 = doc [1] [ "Автоматическое приращение"]; не работает, я могу собрать только первую часть массива.
{"AutoIncrement" : [0,1,2], "Aparelho": [LED, lED1, LED2], "Status": [0,1,0]}
Я мог бы сделать sh, чтобы сделать это так, но в этом массиве у меня проблема с доступом к тому, что в нем, если у меня более 2 строк контента.
[{"AutoIncrement":"1","Aparelho":"LED","Status":"0"},{"AutoIncrement":"2","Aparelho":"LED1","Status":"1"},{"AutoIncrement":"3","Aparelho":"LED2","Status":"0"}]
Это код php:
sql = "SELECT * FROM dados";
$result = mysqli_query($conn, $sql);
$json_array = array();
while($row = mysqli_fetch_assoc($result))
{
$json_array[] = array(
'AutoIncrement' => $row["AutoIncrement"],
'Aparelho' => $row["aparelho"],
'Status' => $row["situacao"],
);
}
return json_encode($json_array);
}
$file_name = 'dadosjson' . '.json';
ESP32, если вы хотите получить loook:
String payload = http.getString();
Serial.println("\nStatuscode: "+ String(httpCode));
Serial.println(payload);
char json[500];
payload.replace(" ", "");
payload.replace("\n", "");
payload.trim();
payload.remove(0,1);
payload.toCharArray(json, 500);
StaticJsonDocument<200> doc;
deserializeJson(doc, json);
//Isso nao depende do nome no banco de dados, depende do nome dentro de action.php
const char* nome = doc[0]["Aparelho"];
int stat = doc[0]["Status"];
int id1 = doc[1]["AutoIncrement"];
const char* nome1 = doc[1]["Aparelho"];
int stat1 = doc[1]["Status"];
int id2 = doc["AutoIncrement"][2];
const char* nome2 = doc["Aparelho"][2];
int stat2 = doc["Status"][2];
Serial.println(id2);
Результат печати id2 равен 0, но предполагается, что он равен 2