FasterXML / jackson-dataformats-binary

Uber-project for standard Jackson binary format backends: avro, cbor, ion, protobuf, smile
Apache License 2.0
314 stars 136 forks source link

Allow exposing CBOR "undefined" value as `JsonToken.VALUE_EMBEDDED_OBJECT` (with embedded value of `null`) #137

Open cowtowncoder opened 6 years ago

cowtowncoder commented 6 years ago

(note: continuation from #93)

Although coercing "undefined" into null token works to some degree, it seems better to allow exposing it in a way that allows caller to distinguish between real null and "undefined". Since we have to do this via Jackson API, tokens, the most straight-forward reliable mean is to either:

  1. Return JsonToken.VALUE_EMBEDDED_OBJECT, with "value" of null
  2. Add a new method in CBORParser to let caller determine if last token returned was for "undefined" (CBOR encoded value of 0xF7)

Or, better yet, allow both.

For backwards compatibility (since 2.9.6, "undefined" has been returned as JsonToken.VALUE_NULL), we need a new CBORParser.Feature to enable (1). New method (name To Be Determined), however, will be available in either case, regardless of token chosen to represent it.