Recognizing document boundaries
A line containing three dashes starts a new YAML document. Three dots may mark the explicit end of a document. These markers are YAML syntax and do not become JSON properties.
---
service: catalog
---
service: checkoutWhy the result is an array
Returning only the first document would discard data. Merging documents into one object could overwrite duplicate keys. An array preserves the document order and keeps each parsed value separate.
The example stream becomes [{"service":"catalog"},{"service":"checkout"}]. A downstream system can then process each array item independently.
Production checks
Confirm whether the target API expects one object, an array, or newline-delimited JSON. Those formats are not interchangeable.
- Validate every YAML document before conversion.
- Check empty documents and separator-only files.
- Preserve document order when order has operational meaning.
A reliable step-by-step workflow
Treat multi-document YAML streams as a data transformation with an explicit input, expected structure, and destination. Work on a copy, validate before changing representation, and isolate the smallest useful sample. This separates syntax failures from data-model or application failures.
Run one change at a time and repeat the same validation after each change. For automated pipelines, fail the job on a parser error instead of publishing a partial or guessed result. Keep the original input beside the generated artifact when traceability matters.
- Start with a representative input and keep an untouched copy so the transformation can be reviewed or repeated.
- Inspect the parsed structure, not only the rendered text; keys, scalar types, array order, and null values are what downstream software receives.
- Test the result in the real destination and record any parser, schema, encoding, or formatting assumptions in the project.
Worked example and verification
The compact sample below is intentionally small enough to inspect by eye. Use the same pattern with a real document: confirm every key, scalar type, list order, and nested boundary before accepting the output.
A successful conversion or minification only proves that the source could be parsed. Compare the parsed value before and after the operation, then load the result with the same library or platform that will consume it in production.
---
name: first
---
name: secondLimits and edge cases
The difficult cases in multi-document YAML streams usually come from differences between syntax validity and application validity. A parser can accept data that is still incomplete, ambiguous, too large, or incompatible with a destination schema.
Never repair or normalize an unfamiliar document blindly. Duplicate keys, implicit types, aliases, precision limits, Unicode, line endings, and very large inputs deserve an explicit policy. When the destination has stricter rules, those rules win.
Production checklist
Before release, test a normal document, an empty value, deeply nested data, non-ASCII text, and a deliberately malformed example. Record the tool or library version if another system must reproduce the exact output.
Make validation part of continuous integration when the data affects builds, deployments, APIs, or configuration. Review diffs, keep a rollback copy, and monitor the first consumer after deployment rather than assuming a syntactically valid file is operationally correct.
- Start with a representative input and keep an untouched copy so the transformation can be reviewed or repeated.
- Inspect the parsed structure, not only the rendered text; keys, scalar types, array order, and null values are what downstream software receives.
- Test the result in the real destination and record any parser, schema, encoding, or formatting assumptions in the project.
Questions about this topic
Does working with multi-document YAML streams change the underlying data?+
It should not change meaning when the operation is purely representational, but parsers may resolve aliases, normalize numbers, drop comments, or choose a different textual style. Compare parsed structures and review the destination’s rules.
How can I verify the result?+
Parse both sides where possible, compare keys and value types, then test the generated result in its real consumer. A visual comparison alone can miss null, number, Boolean, encoding, or duplicate-key differences.
When should I avoid an automatic conversion?+
Avoid unattended conversion when the source uses implementation-specific features, duplicate keys, custom tags, comments that carry operational knowledge, or numeric values whose precision cannot be safely represented.