feat: support stripping outer array in iterate_many #2587
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi Daniel (@lemire),
I hope you're doing well.
This PR addresses issue #2252 by enabling
iterate_manyto handle JSON documents wrapped in a top-level array.As discussed in the issue, many streaming sources wrap their output in a large array. This change allows
simdjsonto process these documents efficiently without requiring the user to manually strip the brackets or wait for the entire array to be loaded.Key Changes:
iterate_manyto skip the leading whitespace and the initial[character if present.allow_comma_separatedtotrueto handle the subsequent objects within the array.iterate_manyfunctionality for NDJSON/multiple concatenated objects remains unaffected.Motivation
The goal is to provide a seamless "Out-of-the-box" experience for users dealing with array-wrapped streaming JSON, which is a common pattern in REST APIs.
I would appreciate your feedback on this implementation. I am a big admirer of your work on high-performance parsers and would be honored to contribute more to
simdjson.Best regards,
Mariam