Skip to content
Snippets Groups Projects
Select Git revision
  • 09c34092baa1f21447efdfb6c577635e84c83207
  • main default protected
  • Vincent
  • home
4 results

MsgPackParserExample.cpp

Blame
  • user avatar
    Rene Ebeling authored
    09c34092
    History
    MsgPackParserExample.cpp 1.44 KiB
    // ArduinoJson - https://arduinojson.org
    // Copyright © 2014-2025, Benoit BLANCHON
    // MIT License
    //
    // This example shows how to generate a JSON document with ArduinoJson.
    
    #include <iostream>
    #include "ArduinoJson.h"
    
    int main() {
      // Allocate the JSON document
      JsonDocument doc;
    
      // The MessagePack input string
      uint8_t input[] = {131, 166, 115, 101, 110, 115, 111, 114, 163, 103, 112, 115,
                         164, 116, 105, 109, 101, 206, 80,  147, 50,  248, 164, 100,
                         97,  116, 97,  146, 203, 64,  72,  96,  199, 58,  188, 148,
                         112, 203, 64,  2,   106, 146, 230, 33,  49,  169};
      // This MessagePack document contains:
      // {
      //   "sensor": "gps",
      //   "time": 1351824120,
      //   "data": [48.75608, 2.302038]
      // }
    
      // Parse the input
      DeserializationError error = deserializeMsgPack(doc, input);
    
      // Test if parsing succeeds
      if (error) {
        std::cerr << "deserializeMsgPack() failed: " << error.c_str() << std::endl;
        return 1;
      }
    
      // Fetch the values
      //
      // Most of the time, you can rely on the implicit casts.
      // In other case, you can do doc["time"].as<long>();
      const char* sensor = doc["sensor"];
      long time = doc["time"];
      double latitude = doc["data"][0];
      double longitude = doc["data"][1];
    
      // Print the values
      std::cout << sensor << std::endl;
      std::cout << time << std::endl;
      std::cout << latitude << std::endl;
      std::cout << longitude << std::endl;
    
      return 0;
    }