2014-07-04 19:11:04 +02:00
Arduino JSON library
====================
2014-11-30 15:11:19 +01:00
[](https://travis-ci.org/bblanchon/ArduinoJson) [](https://coveralls.io/r/bblanchon/ArduinoJson?branch=master)
2014-11-15 15:22:37 +01:00
2014-07-19 16:05:42 +02:00
*An elegant and efficient JSON library for embedded systems.*
2014-07-04 19:11:04 +02:00
2014-08-03 13:48:22 +02:00
It's design to have the most intuitive API, the smallest footprint and works without any allocation on the heap (no malloc).
2014-07-04 19:11:04 +02:00
2014-07-05 12:53:34 +02:00
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.
2014-07-04 19:11:04 +02:00
2014-07-05 16:09:37 +02:00
Features
--------
2014-07-04 19:11:04 +02:00
2014-11-11 14:26:57 +01:00
* JSON decoding
* JSON encoding (with optional indentation)
2014-07-04 19:11:04 +02:00
* Elegant API, very easy to use
* Fixed memory allocation (no malloc)
* Small footprint
* MIT License
2014-11-11 14:26:57 +01:00
Quick start
-----------
2014-07-04 19:11:04 +02:00
2014-11-11 14:26:57 +01:00
#### Decoding / Parsing
char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
2014-07-04 19:11:04 +02:00
2014-11-11 14:26:57 +01:00
StaticJsonBuffer< 200 > jsonBuffer;
2014-07-05 12:53:34 +02:00
2014-11-11 14:26:57 +01:00
JsonObject& root = jsonBuffer.parseObject(json);
2014-07-05 12:53:34 +02:00
2014-11-11 14:26:57 +01:00
const char* sensor = root["sensor"];
long time = root["time"];
double latitude = root["data"][0];
double longitude = root["data"][1];
2014-07-05 12:53:34 +02:00
2014-11-11 14:26:57 +01:00
#### Encoding / Generating
StaticJsonBuffer< 200 > jsonBuffer;
2014-07-04 19:11:04 +02:00
2014-11-11 14:26:57 +01:00
JsonObject& root = jsonBuffer.createObject();
root["sensor"] = "gps";
root["time"] = 1351824120;
2014-07-05 12:53:34 +02:00
2014-11-11 14:26:57 +01:00
JsonArray& data = root.createNestedArray("data");
data.add(48.756080, 6); // 6 is the number of decimals to print
data.add(2.302038, 6); // if not specified, 2 digits are printed
2014-07-05 12:53:34 +02:00
2014-11-11 14:26:57 +01:00
root.printTo(Serial);
// This prints:
// {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]}
2014-07-05 12:53:34 +02:00
2014-11-29 16:59:22 +01:00
Documentation
-------------
The documentation is available online in the [Arduino JSON wiki ](https://github.com/bblanchon/ArduinoJson/wiki )
2014-07-04 19:11:04 +02:00
2014-07-05 16:09:37 +02:00
Testimonials
------------
2014-07-04 19:11:04 +02:00
From Arduino's Forum user `jflaplante` :
2014-10-03 10:06:52 +02:00
> I tried aJson json-arduino before trying your library. I always ran into memory problem after a while.
2014-07-04 19:11:04 +02:00
> I have no such problem so far with your library. It is working perfectly with my web services.
From Arduino's Forum user `gbathree` :
> Thanks so much - this is an awesome library! If you want to see what we're doing with it - the project is located at www.photosynq.org.
From StackOverflow user `thegreendroid` :
2014-07-05 16:09:37 +02:00
> It has a really elegant, simple API and it works like a charm on embedded and Windows/Linux platforms. We recently started using this on an embedded project and I can vouch for its quality.
2014-10-03 10:06:52 +02:00
From GitHub user `zacsketches` :
> Thanks for a great library!!!
> I've been watching you consistently develop this library over the past six months, and I used it today for a publish and subscribe architecture designed to help hobbyists move into more advanced robotics. Your library allowed me to implement remote subscription in order to facilitate multi-processor robots.
> ArduinoJson saved me a week's worth of time!!
2014-11-11 17:50:40 +01:00
---
2014-07-05 16:09:37 +02:00
2014-11-11 17:50:40 +01:00
Found this library useful? [Help me back with a donation! ](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=donate%40benoitblanchon%2efr&lc=GB&item_name=Benoit%20Blanchon&item_number=Arduino%20JSON¤cy_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted ) :smile: