Encodes a json value to the cbor binary serialization format.
#include <jsoncons_ext/cbor/cbor.hpp>
template<class Json>
void encode_cbor(const Json& jval, std::vector<uint8_t>& buffer); // (1)
template<class Json>
void encode_cbor(const Json& j, std::basic_ostream<typename Json::char_type>& os); // (2)
(1) Writes json value in CBOR data format to buffer
(2) Writes json value in CBOR data format to binary output stream
- decode_cbor decodes a cbor binary serialization format to a json value.
#include <jsoncons/json.hpp>
#include <jsoncons_ext/cbor/cbor.hpp>
using namespace jsoncons;
int main()
{
ojson j1;
j1["zero"] = 0;
j1["one"] = 1;
j1["two"] = 2;
j1["null"] = null_type();
j1["true"] = true;
j1["false"] = false;
j1["max int64_t"] = (std::numeric_limits<int64_t>::max)();
j1["max uint64_t"] = (std::numeric_limits<uint64_t>::max)();
j1["min int64_t"] = (std::numeric_limits<int64_t>::min)();
j1["max int32_t"] = (std::numeric_limits<int32_t>::max)();
j1["max uint32_t"] = (std::numeric_limits<uint32_t>::max)();
j1["min int32_t"] = (std::numeric_limits<int32_t>::min)();
j1["max int16_t"] = (std::numeric_limits<int16_t>::max)();
j1["max uint16_t"] = (std::numeric_limits<uint16_t>::max)();
j1["min int16_t"] = (std::numeric_limits<int16_t>::min)();
j1["max int8_t"] = (std::numeric_limits<int8_t>::max)();
j1["max uint8_t"] = (std::numeric_limits<uint8_t>::max)();
j1["min int8_t"] = (std::numeric_limits<int8_t>::min)();
j1["max double"] = (std::numeric_limits<double>::max)();
j1["min double"] = -(std::numeric_limits<double>::max)();
j1["max float"] = (std::numeric_limits<float>::max)();
j1["zero float"] = 0.0;
j1["min float"] = -(std::numeric_limits<float>::max)();
j1["Key too long for small string optimization"] = "String too long for small string optimization";
std::vector<uint8_t> v;
cbor::encode_cbor(j1, v);
ojson j2 = cbor::decode_cbor<ojson>(v);
std::cout << pretty_print(j2) << std::endl;
}
Output:
{
"zero": 0,
"one": 1,
"two": 2,
"null": null,
"true": true,
"false": false,
"max int64_t": 9223372036854775807,
"max uint64_t": 18446744073709551615,
"min int64_t": -9223372036854775808,
"max int32_t": 2147483647,
"max uint32_t": 4294967295,
"min int32_t": -2147483648,
"max int16_t": 32767,
"max uint16_t": 65535,
"min int16_t": -32768,
"max int8_t": 127,
"max uint8_t": 255,
"min int8_t": -128,
"max double": 1.79769313486232e+308,
"min double": -1.79769313486232e+308,
"max float": 3.40282346638529e+038,
"zero float": 0.0,
"min float": -3.40282346638529e+038,
"Key too long for small string optimization": "String too long for small string optimization"
}
#include <jsoncons/json.hpp>
#include <jsoncons_ext/cbor/cbor.hpp>
using namespace jsoncons;
int main()
{
// construct byte string value
json j(byte_string("Hello"));
std::vector<uint8_t> buf;
cbor::encode_cbor(j, buf);
std::cout << std::hex << std::showbase << (int)buf[0];
for (size_t i = 1; i < buf.size(); ++i)
{
std::cout << (char)buf[i];
}
std::cout << std::endl;
}
Output:
0x45Hello
- byte_string
- cbor_view
- decode_cbor decodes a cbor binary serialization format to a json value.