Not sure if it helps, but internally Jackson uses `TokenBuffer` for uses like this: unprocessed content is appended into buffer, and once everything is gathered, content is re-read using `JsonParser` instance created from `TokenBuffer`. This is quite efficient given that no decoding step is needed, and convenient as `TokenBuffer` implements `JsonGenerator` directly (so copying using `generator.copyToken()`/`copyStructure()` can be used) and allows uses custon buffer-backed `JsonParser` implementation.
So one possibility could be to use converting deserializer, specifying `TokenBuffer` as type Jackson should bind data as, then read everything from that.
Alternatively you could make custom deserializer use TokenBuffer if and only if needed -- Jackson itself does this for polymorphic type handling, and buffering is only needed if the type id is NOT the first property found.
-+ Tatu +-