Returns FieldInput that represents next field of this object.
Returns FieldInput that represents next field of this object.
You MUST NOT call nextField()
again until this FieldInput
is fully read or skipped.
Serialization format implemented by this ObjectInput
must either preserve order of fields (as they are
written by corresponding ObjectOutput
) OR it must provide random field access capability.
ObjectOutput.writeField
. This is
natural for most serialization formats backed by strings, raw character or byte sequences, e.g.
JSON implemented by JsonStringOutput/
JsonStringInput.Tries to obtain FieldInput for field with specified name, either by using peekField (assuming format with random field access) or nextField (assuming format that preserves field order).
Tries to obtain FieldInput for field with specified name, either by using peekField (assuming format with
random field access) or nextField (assuming format that preserves field order). A codec that uses this method
must ensure that it reads fields in the same order as they were written using writeField
on ObjectOutput.
If serialization format implemented by ObjectInput
does NOT preserve field order, then this method MUST
be overridden to support random field access.
If serialization format implemented by ObjectInput
does NOT preserve field order, then this method MUST
be overridden to support random field access. It should return non-empty Opt containing input for every field
present in the object, regardless of field order assumed by nextField.
Opt.Empty
is returned when field is absent or always when this ObjectInput
does not support random field
access (in which case it must preserve field order instead).
NOTE: calling peekField and using FieldInput returned by it MUST NOT change state of this ObjectInput
.
Therefore, it cannot in any way influence results returned by nextField and hasNext.
For example, if a FieldInput for particular field has already been
accessed using peekField but has not yet been returned by nextField then it MUST be returned at some
point in the future by nextField.
Represents an abstract source of key-value mappings that can be deserialized. ObjectInput instance is stateful and MUST be read strictly sequentially. This means, you MUST fully exhaust any Input instance returned by
nextField()
before callingnextField()
again. For this reason, ObjectInput is not anIterator
despite having similar interface (Iterator
would easily allow e.g. conversion toList[(String, Input)]
which would be illegal).ObjectInput MUST always be fully exhausted. In order to ignore any remaining key-value mappings,
skipRemaining()
may be used.