Skip to content

nlohmann::basic_json::input_format_t

enumclassinput_format_t{
json,
cbor,
msgpack,
ubjson,
bson,
bjdata
};

This enumeration is used in the sax_parse function to choose the input format to parse:

json
JSON (JavaScript Object Notation)
cbor
CBOR (Concise Binary Object Representation)
msgpack
MessagePack
ubjson
UBJSON (Universal Binary JSON)
bson
BSON (Binary JSON)
bjdata
BJData (Binary JData)

Examples

Example

The example below shows how an input_format_t enum value is passed to sax_parse to set the input format to CBOR.

#include<iostream>
#include<iomanip>
#include<sstream>
#include<nlohmann/json.hpp>
usingjson=nlohmann::json;
// a simple event consumer that collects string representations of the passed
// values; note inheriting from json::json_sax_t is not required, but can
// help not to forget a required function
classsax_event_consumer:publicjson::json_sax_t
{
public:
std::vector<std::string>events;
boolnull()override
{
events.push_back("null()");
returntrue;
}
boolboolean(boolval)override
{
events.push_back("boolean(val="+std::string(val?"true":"false")+")");
returntrue;
}
boolnumber_integer(number_integer_tval)override
{
events.push_back("number_integer(val="+std::to_string(val)+")");
returntrue;
}
boolnumber_unsigned(number_unsigned_tval)override
{
events.push_back("number_unsigned(val="+std::to_string(val)+")");
returntrue;
}
boolnumber_float(number_float_tval,conststring_t&s)override
{
events.push_back("number_float(val="+std::to_string(val)+", s="+s+")");
returntrue;
}
boolstring(string_t&val)override
{
events.push_back("string(val="+val+")");
returntrue;
}
boolstart_object(std::size_telements)override
{
events.push_back("start_object(elements="+std::to_string(elements)+")");
returntrue;
}
boolend_object()override
{
events.push_back("end_object()");
returntrue;
}
boolstart_array(std::size_telements)override
{
events.push_back("start_array(elements="+std::to_string(elements)+")");
returntrue;
}
boolend_array()override
{
events.push_back("end_array()");
returntrue;
}
boolkey(string_t&val)override
{
events.push_back("key(val="+val+")");
returntrue;
}
boolbinary(json::binary_t&val)override
{
events.push_back("binary(val=[...])");
returntrue;
}
boolparse_error(std::size_tposition,conststd::string&last_token,constjson::exception&ex)override
{
events.push_back("parse_error(position="+std::to_string(position)+", last_token="+last_token+",\n ex="+std::string(ex.what())+")");
returnfalse;
}
};
intmain()
{
// CBOR byte string
std::vector<std::uint8_t>vec={{0x44,0xcA,0xfe,0xba,0xbe}};
// create a SAX event consumer object
sax_event_consumersec;
// parse CBOR
boolresult=json::sax_parse(vec,&sec,json::input_format_t::cbor);
// output the recorded events
for(auto&event:sec.events)
{
std::cout<<event<<"\n";
}
// output the result of sax_parse
std::cout<<"\nresult: "<<std::boolalpha<<result<<std::endl;
}

Output:

binary(val=[...])
result:true

Version history

  • Added in version 3.2.0.

AltStyle によって変換されたページ (->オリジナル) /