#include <ArduinoJson.h>
String data;
String data2;
char* dataC[6];
void setup() {
// Initialize serial port
Serial.begin(115200);
//data = "{'values': [['กุลนิภา เจี่ยยิ่งเจริญ1'],['กิตติคุณ สมภักดี'],['อธิราช สว่างวงค์'],['พรนัชชา นามฉิม'],['กุลนิภา เจี่ยยิ่งเจริญ']]}";
// Allocate the JSON document
//
// Inside the brackets, 200 is the capacity of the memory pool in bytes.
// Don't forget to change this value to match your JSON document.
// Use arduinojson.org/v6/assistant to compute the capacity.
//StaticJsonDocument<600> doc;
// StaticJsonDocument<N> allocates memory on the stack, it can be
// replaced by DynamicJsonDocument which allocates in the heap.
//
DynamicJsonDocument doc(500);
Serial.println(sizeof(data));
//data2 = data;
// JSON input string.
//
// Using a char[], as shown here, enables the "zero-copy" mode. This mode uses
// the minimal amount of memory because the JsonDocument stores pointers to
// the input buffer.
// If you use another type of input, ArduinoJson must copy the strings from
// the input to the JsonDocument, so you need to increase the capacity of the
// JsonDocument.
char json[] = "{'sensor':'gps','time':1351824120,'data':[48.756080,2.302038]}";
// Deserialize the JSON document
//DeserializationError error = deserializeJson(doc, json);
deserializeJson(doc, data);
//Serial.println(data);
//test(stringToChar(data));
// Test if parsing succeeds.
// Fetch values.
//
// Most of the time, you can rely on the implicit casts.
// In other case, you can do doc["time"].as<long>();
//const char* sensor = doc["sensor"];
//long time = doc["time"];
//double latitude = doc["data"][0];
//double longitude = doc["data"][1];
String name, nameResult;
for(int i; i<5; i++){
name = doc["values"][i].as<String>();
name.replace("[","");
name.replace("]","");
name = name.substring(1);
name = name.substring(0, name.length() - 1);
dataC[i] = name.c_str();
//Serial.println("Name: " + name);
}
Serial.println("Name: " + String(dataC[2]));
// Print values.
//Serial.println(sensor);
//Serial.print("Name: ");
//Serial.println(name);
//Serial.println(latitude, 6);
//Serial.println(longitude, 6);
}
void loop() {
// not used in this example
}
char stringToChar(const String& inputString) {
// Allocate memory for the char array (including null terminator)
char* charArray = new char[inputString.length() + 1];
char* cResult;
// Copy the string content to the char array
inputString.toCharArray(charArray, inputString.length() + 1);
cResult = charArray;
return cResult;
delete[] charArray;
}
void test(char *a){
Serial.println(a);
}