|
|
@@ -1,11 +1,11 @@
|
|
|
-An efficient JSON parser for Arduino
|
|
|
-====================================
|
|
|
+Arduino JSON library - Parser
|
|
|
+=============================
|
|
|
|
|
|
This library is an thin C++ wrapper around the *jsmn* tokenizer: http://zserge.com/jsmn.html
|
|
|
|
|
|
It's design to be very lightweight, works without any allocation on the heap (no malloc) and supports nested objects.
|
|
|
|
|
|
-It has been written with Arduino in mind, but it isn't linked to Arduino libraries so you can use this library on any other C++ project.
|
|
|
+It has been written with Arduino in mind, but it isn't linked to Arduino libraries so you can use this library in any other C++ project.
|
|
|
|
|
|
|
|
|
Features
|
|
|
@@ -13,33 +13,26 @@ Features
|
|
|
|
|
|
* Based on the well-proven [jsmn](http://zserge.com/jsmn.html) tokenizer
|
|
|
* Supports nested objects
|
|
|
-* Works with fixed memory allocation : no `malloc()`
|
|
|
-* Low footprint
|
|
|
+* Elegant API, very easy to use
|
|
|
+* Fixed memory allocation (no malloc)
|
|
|
+* Small footprint
|
|
|
* MIT License
|
|
|
|
|
|
|
|
|
Example
|
|
|
-------
|
|
|
|
|
|
- char json[] = "{\"Name\":\"Blanchon\",\"Skills\":[\"C\",\"C++\",\"C#\"],\"Age\":32,\"Online\":true}";
|
|
|
+ char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
|
|
|
|
|
|
JsonParser<32> parser;
|
|
|
|
|
|
- JsonHashTable hashTable = parser.parseHashTable(json);
|
|
|
-
|
|
|
- if (!hashTable.success())
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- char* name = hashTable.getString("Name");
|
|
|
-
|
|
|
- JsonArray skills = hashTable.getArray("Skills");
|
|
|
-
|
|
|
- int age = hashTable.getLong("Age");
|
|
|
+ JsonHashTable root = parser.parseHashTable(json);
|
|
|
|
|
|
- bool online = hashTable.getBool("Online");
|
|
|
+ char* sensor = root.getString("sensor");
|
|
|
|
|
|
+ long time = root.getLong("time");
|
|
|
+
|
|
|
+ JsonArray coords = root.getArray("data");
|
|
|
|
|
|
|
|
|
How to use ?
|
|
|
@@ -49,13 +42,15 @@ How to use ?
|
|
|
|
|
|
Download the library and extract it to:
|
|
|
|
|
|
- <your Arduino Sketch folder>/libraries/ArduinoJsonParser
|
|
|
+ <your Arduino Sketch folder>/libraries/ArduinoJson
|
|
|
|
|
|
### 2. Import in your sketch
|
|
|
|
|
|
-Just add the following line on the top of your `.ino` file:
|
|
|
+Just add the following lines at the top of your `.ino` file:
|
|
|
|
|
|
#include <JsonParser.h>
|
|
|
+
|
|
|
+ using namespace ArduinoJson::Parser;
|
|
|
|
|
|
### 3. Create a parser
|
|
|
|
|
|
@@ -233,7 +228,7 @@ Code size
|
|
|
|
|
|
Theses tables has been created by analyzing the map file generated by AVR-GCC after adding `-Wl,-Map,foo.map` to the command line.
|
|
|
|
|
|
-As you'll see the code size if between 1680 and 3528 bytes, depending on the features you use.
|
|
|
+As you'll see the code size is between 1680 and 3528 bytes, depending on the features you use.
|
|
|
|
|
|
### Minimum setup
|
|
|
|
|
|
@@ -406,11 +401,4 @@ 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>
|
|
|
-
|
|
|
-
|
|
|
-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/)
|
|
|
+</table>
|