Мои знания в C ++ очень ограничены.
Я использую ESP32 с Arduino и анализирую данные в библиотеках JSMN.
Мне удалось отобразить данные анализа с помощью printf, но я не могу поместить возвращаемые данные в символ *.
#define ARRAYSIZE 100
HTTPClient http;
http.begin("http://servername/serv/ctrlBadge?entryCodeBadge=11d438cd1&entryidPorte=2"); //Specify the URL
//Make requests
int httpCode = http.GET();
if (httpCode > 0 ) { //Check for the returning code
String payload = http.getString();
Serial.println(httpCode2);
int lim=payload.length()+1;
char charBuf[lim];
char *myStrings[ARRAYSIZE]
payload.toCharArray(charBuf, lim) ;
char *JSON_STRING = charBuf;
Serial.println(JSON_STRING);
int i;
int r;
jsmn_parser p;
jsmntok_t t[128]; /* We expect no more than 128 tokens */
jsmn_init(&p);
r = jsmn_parse(&p, JSON_STRING, strlen(JSON_STRING), t, sizeof(t) / sizeof(t[0]));
if (r < 0) {
printf("Failed to parse JSON: %d\n", r);
}
/* Assume the top-level element is an object */
else if (r < 1 || t[0].type != JSMN_OBJECT) {
printf("Object expected\n");
}
else{
/* Loop over all keys of the root object */
for (i = 1; i < r; i++) {
if (jsoneq(JSON_STRING, &t[i], "codeBadge") == 0) {
/* We may use strndup() to fetch string value */
printf("- User: %.*s\n", t[i + 1].end - t[i + 1].start,
JSON_STRING + t[i + 1].start);//Response
memcpy(myStrings[i], JSON_STRING + t[i + 1].start, sizeof(JSON_STRING + t[i + 1].start));
i++;
}
}
for (int i =0; i< ARRAYSIZE; i++) Serial.println(myStrings[i]);
}
}
Мне удалось отобразить codeBadge с:
printf("- User: %.*s\n", t[i + 1].end - t[i + 1].start, JSON_STRING + t[i + 1].start);//Response
Но я не знаю, как поместить переменную возврата в символ *.
Я пытался использовать функцию memcpy, но у меня ошибка:
Ошибка медитации гуру: Core 1 в панике (StorePro запрещено). Исключение не было обработано.