1c5f01b2fSopenharmony_ci#include <iostream> 2c5f01b2fSopenharmony_ci#include <iomanip> 3c5f01b2fSopenharmony_ci#include <nlohmann/json.hpp> 4c5f01b2fSopenharmony_ci 5c5f01b2fSopenharmony_ciusing json = nlohmann::json; 6c5f01b2fSopenharmony_ciusing namespace nlohmann::literals; 7c5f01b2fSopenharmony_ci 8c5f01b2fSopenharmony_ci// function to print UBJSON's diagnostic format 9c5f01b2fSopenharmony_civoid print_byte(uint8_t byte) 10c5f01b2fSopenharmony_ci{ 11c5f01b2fSopenharmony_ci if (32 < byte and byte < 128) 12c5f01b2fSopenharmony_ci { 13c5f01b2fSopenharmony_ci std::cout << (char)byte; 14c5f01b2fSopenharmony_ci } 15c5f01b2fSopenharmony_ci else 16c5f01b2fSopenharmony_ci { 17c5f01b2fSopenharmony_ci std::cout << (int)byte; 18c5f01b2fSopenharmony_ci } 19c5f01b2fSopenharmony_ci} 20c5f01b2fSopenharmony_ci 21c5f01b2fSopenharmony_ciint main() 22c5f01b2fSopenharmony_ci{ 23c5f01b2fSopenharmony_ci // create a JSON value 24c5f01b2fSopenharmony_ci json j = R"({"compact": true, "schema": false})"_json; 25c5f01b2fSopenharmony_ci 26c5f01b2fSopenharmony_ci // serialize it to UBJSON 27c5f01b2fSopenharmony_ci std::vector<std::uint8_t> v = json::to_ubjson(j); 28c5f01b2fSopenharmony_ci 29c5f01b2fSopenharmony_ci // print the vector content 30c5f01b2fSopenharmony_ci for (auto& byte : v) 31c5f01b2fSopenharmony_ci { 32c5f01b2fSopenharmony_ci print_byte(byte); 33c5f01b2fSopenharmony_ci } 34c5f01b2fSopenharmony_ci std::cout << std::endl; 35c5f01b2fSopenharmony_ci 36c5f01b2fSopenharmony_ci // create an array of numbers 37c5f01b2fSopenharmony_ci json array = {1, 2, 3, 4, 5, 6, 7, 8}; 38c5f01b2fSopenharmony_ci 39c5f01b2fSopenharmony_ci // serialize it to UBJSON using default representation 40c5f01b2fSopenharmony_ci std::vector<std::uint8_t> v_array = json::to_ubjson(array); 41c5f01b2fSopenharmony_ci // serialize it to UBJSON using size optimization 42c5f01b2fSopenharmony_ci std::vector<std::uint8_t> v_array_size = json::to_ubjson(array, true); 43c5f01b2fSopenharmony_ci // serialize it to UBJSON using type optimization 44c5f01b2fSopenharmony_ci std::vector<std::uint8_t> v_array_size_and_type = json::to_ubjson(array, true, true); 45c5f01b2fSopenharmony_ci 46c5f01b2fSopenharmony_ci // print the vector contents 47c5f01b2fSopenharmony_ci for (auto& byte : v_array) 48c5f01b2fSopenharmony_ci { 49c5f01b2fSopenharmony_ci print_byte(byte); 50c5f01b2fSopenharmony_ci } 51c5f01b2fSopenharmony_ci std::cout << std::endl; 52c5f01b2fSopenharmony_ci 53c5f01b2fSopenharmony_ci for (auto& byte : v_array_size) 54c5f01b2fSopenharmony_ci { 55c5f01b2fSopenharmony_ci print_byte(byte); 56c5f01b2fSopenharmony_ci } 57c5f01b2fSopenharmony_ci std::cout << std::endl; 58c5f01b2fSopenharmony_ci 59c5f01b2fSopenharmony_ci for (auto& byte : v_array_size_and_type) 60c5f01b2fSopenharmony_ci { 61c5f01b2fSopenharmony_ci print_byte(byte); 62c5f01b2fSopenharmony_ci } 63c5f01b2fSopenharmony_ci std::cout << std::endl; 64c5f01b2fSopenharmony_ci} 65