| #include <iostream> |
| #include <iomanip> |
| #include <nlohmann/json.hpp> |
| |
| using json = nlohmann::json; |
| using namespace nlohmann::literals; |
| |
| // function to print UBJSON's diagnostic format |
| void print_byte(uint8_t byte) |
| { |
| if (32 < byte and byte < 128) |
| { |
| std::cout << (char)byte; |
| } |
| else |
| { |
| std::cout << (int)byte; |
| } |
| } |
| |
| int main() |
| { |
| // create a JSON value |
| json j = R"({"compact": true, "schema": false})"_json; |
| |
| // serialize it to UBJSON |
| std::vector<std::uint8_t> v = json::to_ubjson(j); |
| |
| // print the vector content |
| for (auto& byte : v) |
| { |
| print_byte(byte); |
| } |
| std::cout << std::endl; |
| |
| // create an array of numbers |
| json array = {1, 2, 3, 4, 5, 6, 7, 8}; |
| |
| // serialize it to UBJSON using default representation |
| std::vector<std::uint8_t> v_array = json::to_ubjson(array); |
| // serialize it to UBJSON using size optimization |
| std::vector<std::uint8_t> v_array_size = json::to_ubjson(array, true); |
| // serialize it to UBJSON using type optimization |
| std::vector<std::uint8_t> v_array_size_and_type = json::to_ubjson(array, true, true); |
| |
| // print the vector contents |
| for (auto& byte : v_array) |
| { |
| print_byte(byte); |
| } |
| std::cout << std::endl; |
| |
| for (auto& byte : v_array_size) |
| { |
| print_byte(byte); |
| } |
| std::cout << std::endl; |
| |
| for (auto& byte : v_array_size_and_type) |
| { |
| print_byte(byte); |
| } |
| std::cout << std::endl; |
| } |