Compare commits

...

3 Commits
v1.1 ... v1.2

Author SHA1 Message Date
80e0a51c15 Updated change log 2014-03-03 14:03:32 +01:00
dd416e51f3 Added links 2014-03-03 14:00:00 +01:00
7059e35938 Fixed char[] json in the example 2014-03-01 12:59:45 +01:00
3 changed files with 108 additions and 96 deletions

View File

@ -1,10 +1,15 @@
ArduinoJsonParser change log
============================
v1.2
----
* Example: changed `char[] json` into `char json[]`. Damn it C# !
v1.1
----
* Example: changed `char* json` into `char json[]` so that the byes are not write protected
* Example: changed `char* json` into `char[] json` so that the bytes are not write protected
* Fixed parsing bug when the JSON contains multi-dimensional arrays
v1.0

View File

@ -406,4 +406,11 @@ As you'll see the code size if between 1680 and 3528 bytes, depending on the fea
<td>TOTAL</td>
<td>710</td>
</tr>
</table>
</table>
Links
-----
* [The project for which I made me this library](http://blog.benoitblanchon.fr/rfid-payment-terminal/)
* [Blog post on the motivation for this library](http://blog.benoitblanchon.fr/arduino-json-parser/)

View File

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