Example: change the type of the json string from char* to char[] because it cause issue in memory protected environments.

This commit is contained in:
Benoit Blanchon
2014-02-26 21:38:58 +01:00
parent 53466a2fb2
commit 006fc13141

View File

@ -1,94 +1,94 @@
/* /*
* malloc-free JSON parser for Arduino * malloc-free JSON parser for Arduino
* Benoit Blanchon 2014 - MIT License * Benoit Blanchon 2014 - MIT License
*/ */
#include <JsonParser.h> #include <JsonParser.h>
void ParseAnObject() void ParseAnObject()
{ {
char* json = "{\"Name\":\"Blanchon\",\"Skills\":[\"C\",\"C++\",\"C#\"],\"Age\":32,\"Online\":true}"; char[] json = "{\"Name\":\"Blanchon\",\"Skills\":[\"C\",\"C++\",\"C#\"],\"Age\":32,\"Online\":true}";
JsonParser<32> parser; JsonParser<32> parser;
Serial.print("Parse "); Serial.print("Parse ");
Serial.println(json); Serial.println(json);
JsonHashTable hashTable = parser.parseHashTable(json); JsonHashTable hashTable = parser.parseHashTable(json);
if (!hashTable.success()) if (!hashTable.success())
{ {
Serial.println("JsonParser.parseHashTable() failed"); Serial.println("JsonParser.parseHashTable() failed");
return; return;
} }
char* name = hashTable.getString("Name"); char* name = hashTable.getString("Name");
Serial.print("name="); Serial.print("name=");
Serial.println(name); Serial.println(name);
JsonArray skills = hashTable.getArray("Skills"); JsonArray skills = hashTable.getArray("Skills");
Serial.println("skills:"); Serial.println("skills:");
for (int i = 0; i < skills.getLength(); i++) for (int i = 0; i < skills.getLength(); i++)
{ {
char* value = skills.getString(i); char* value = skills.getString(i);
Serial.print(i); Serial.print(i);
Serial.print(" "); Serial.print(" ");
Serial.println(value); Serial.println(value);
} }
int age = hashTable.getLong("Age"); int age = hashTable.getLong("Age");
Serial.print("age="); Serial.print("age=");
Serial.println(age); Serial.println(age);
bool online = hashTable.getBool("Online"); bool online = hashTable.getBool("Online");
Serial.print("online="); Serial.print("online=");
Serial.println(online); Serial.println(online);
} }
void ParseAnArray() void ParseAnArray()
{ {
char* json = "[[1.2,3.4],[5.6,7.8]]"; char[] json = "[[1.2,3.4],[5.6,7.8]]";
JsonParser<32> parser; JsonParser<32> parser;
Serial.print("Parse "); Serial.print("Parse ");
Serial.println(json); Serial.println(json);
JsonArray array = parser.parseArray(json); JsonArray array = parser.parseArray(json);
if (!array.success()) if (!array.success())
{ {
Serial.println("JsonParser.parseArray() failed"); Serial.println("JsonParser.parseArray() failed");
return; return;
} }
for (int i = 0; i < array.getLength(); i++) for (int i = 0; i < array.getLength(); i++)
{ {
Serial.println(i); Serial.println(i);
JsonArray innerArray = array.getArray(i); JsonArray innerArray = array.getArray(i);
for (int j = 0; j < innerArray.getLength(); j++) for (int j = 0; j < innerArray.getLength(); j++)
{ {
double value = innerArray.getDouble(j); double value = innerArray.getDouble(j);
Serial.print(" "); Serial.print(" ");
Serial.print(j); Serial.print(j);
Serial.print("="); Serial.print("=");
Serial.println(value); Serial.println(value);
} }
} }
} }
void setup() void setup()
{ {
Serial.begin(9600); Serial.begin(9600);
ParseAnObject(); ParseAnObject();
ParseAnArray(); ParseAnArray();
} }
void loop() void loop()
{ {
} }