Ich habe es mit der Variable probiert aber das gleiche Ergebnis.
Code:
Result := TStringStream.Create(s);
Ohne genaue Kenntnis von TOpenApiDocument, TOcOpenApiBuilder, TJsonWriter (ist nicht der Delphi eigene) und TSerializer ist es schwierig dir da weiterzuhelfen.
Aber ein Hinweis: Wenn URLEncoding == true ist, dann überschreibst du das Result und hast ein Speicherleck vom ersten erzeugten Stream.
Der TJsonWriter und TSerializer (von TMS) sollten eigentlich nur ein Objekt (ein beliebiges, in diesen Fall TOpenApiDocument) in json (String) serialisieren.
Genau das passiert auch, im TStream Objekt befindet das vollständige json, verwende ich wie angedeutet ein TFileStream und speicher ihn in eine Datei ist auch alles da, mache ich das selbe mit TStringStream fehlt einfach die Hälfte.
Um es konkreter zu Formulieren: Verwende ich TStringStream, funktioniert am Ende alles, ich erhalte das Vollständige json wenn ich über http Anfrage. Wenn ich jedoch wie im Beispiel das json verändern möchte und über DataString darauf zugreife fehlt ein Großteil des Strings.