|
BDE 4.14.0 Production release
|
Provide a utility for configuring baljsn::DecoderOptions.
baljsn::DecoderOptionsThis component provides a struct of utility functions, baljsn::DecoderOptionsUtil, for configuring baljsn::DecoderOptions object. In particular, this utility can be used to set the combination of options needed for strict compliance with the JSON grammar (see Strict Conformance . This utility can also be used to set a baljsn::DecoderOptions object to its default state.
When a default constructed baljsn::DecoderOptions object is passed to the decode methods of a baljsn::Decoder, several convenient variances from the JSON grammar are tolerated in the JSON document without causing failure. Specifically:
See Attributes for examples. Should any of these variances be unacceptable, then one can flip individual options. Strict compliance (see bdljsn_jsontestsuiteutil ) with the JSON grammar requires that each option named above be flipped to the opposite value:
This utility defines the mode baljsn::DecoderOptionsUtil::e_STRICT_20240423 to allow all four options to be set with a single call.
Note that baljsn::DecoderOptions defines other options besides the four cited above. Those are not changed by setting the baljsn::DecoderOptionsUtil::e_STRICT_20240423 combination but are set when setting the options object using baljsn::DecoderOptionsUtil::e_DEFAULT.
This section illustrates intended use of this component.
Every call to one of the (non-deprecated) decode functions of baljsn::Decoder requires the user to provide a baljsn::DecoderOptions object that allows the user to fine-tune the rules used when decoding the JSON document. The setMode function of this utility provides a convenient way to set the option attributes to a combination that is deemed "strict" (i.e., strictly complying with the rules of the JSON grammar).
First, create a baljsn::DecoderOptions object:
Now, set the option values for strict compliance:
Finally, should there be a need, options can be adjusted to a laxer set of rules by adjusting individual attributes or, if the original set of default attributes is needed, by using setMode: