Files
ArduinoJson/extras/scripts/wandbox/JsonParserExample.cpp

60 lines
1.8 KiB
C++
Raw Normal View History

// ArduinoJson - arduinojson.org
2021-01-25 09:14:15 +01:00
// Copyright Benoit Blanchon 2014-2021
// MIT License
//
// This example shows how to deserialize a JSON document with ArduinoJson.
#include <iostream>
#include "ArduinoJson.h"
int main() {
2019-02-26 10:02:52 +01:00
// Allocate the JSON document
//
2019-02-26 10:02:52 +01:00
// 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.
2019-02-26 10:02:52 +01:00
// Use arduinojson.org/v6/assistant to compute the capacity.
StaticJsonDocument<300> doc;
// StaticJsonDocument<N> allocates memory on the stack, it can be
2019-02-26 10:02:52 +01:00
// replaced by DynamicJsonDocument which allocates in the heap.
//
2019-02-26 10:02:52 +01:00
// DynamicJsonDocument doc(200);
// JSON input string.
//
2019-02-26 10:02:52 +01:00
// 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);
// Test if parsing succeeds.
if (error) {
std::cerr << "deserializeJson() failed: " << error.c_str() << std::endl;
return 1;
}
// Fetch values.
//
// Most of the time, you can rely on the implicit casts.
// In other case, you can do doc["time"].as<long>();
2019-02-26 10:02:52 +01:00
const char* sensor = doc["sensor"];
long time = doc["time"];
double latitude = doc["data"][0];
double longitude = doc["data"][1];
// Print values.
std::cout << sensor << std::endl;
std::cout << time << std::endl;
std::cout << latitude << std::endl;
std::cout << longitude << std::endl;
return 0;
}