-
-
Notifications
You must be signed in to change notification settings - Fork 135
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature] Support writing JsValue directly to OutputStream #1126
Comments
here-abarany
added a commit
to here-abarany/play-json
that referenced
this issue
Feb 14, 2025
Added JsonFacade functions writeToStream and prettyPrintToStream to support writing to an OutputStream without first writing the full string to memory. The JVM implementation forwards these calls to the appropriate functions in Jackson. For now, the non-JVM implementations will build up the full string in memory. Ideally the strings should be written out as they are built up, but this would require a refactoring of the fromJs() function to support an interface to feed each string value and minimize the number of conversions to UTF-8 (for toBytes and writing to stream) or avoid conversions (for String). For now, this fulfills the interface guarantee while providing the same level of functionality as before. Fixes playframework#1126
here-abarany
added a commit
to here-abarany/play-json
that referenced
this issue
Feb 14, 2025
Added JsonFacade functions writeToStream and prettyPrintToStream to support writing to an OutputStream without first writing the full string to memory. The JVM implementation forwards these calls to the appropriate functions in Jackson. For now, the non-JVM implementations will build up the full string in memory. Ideally the strings should be written out as they are built up, but this would require a refactoring of the fromJs() function to support an interface to feed each string value and minimize the number of conversions to UTF-8 (for toBytes and writing to stream) or avoid conversions (for String). For now, this fulfills the interface guarantee while providing the same level of functionality as before. Fixes playframework#1126
here-abarany
added a commit
to here-abarany/play-json
that referenced
this issue
Feb 14, 2025
Added JsonFacade functions writeToStream and prettyPrintToStream to support writing to an OutputStream without first writing the full string to memory. The JVM implementation forwards these calls to the appropriate functions in Jackson. For now, the non-JVM implementations will build up the full string in memory. Ideally the strings should be written out as they are built up, but this would require a refactoring of the fromJs() function to support an interface to feed each string value and minimize the number of conversions to UTF-8 (for toBytes and writing to stream) or avoid conversions (for String). For now, this fulfills the interface guarantee while providing the same level of functionality as before. Fixes playframework#1126
5 tasks
here-abarany
added a commit
to here-abarany/play-json
that referenced
this issue
Feb 14, 2025
Added JsonFacade functions writeToStream and prettyPrintToStream to support writing to an OutputStream without first writing the full string to memory. The JVM implementation forwards these calls to the appropriate functions in Jackson. For now, the non-JVM implementations will build up the full string in memory. Ideally the strings should be written out as they are built up, but this would require a refactoring of the fromJs() function to support an interface to feed each string value and minimize the number of conversions to UTF-8 (for toBytes and writing to stream) or avoid conversions (for String). For now, this fulfills the interface guarantee while providing the same level of functionality as before. Fixes playframework#1126
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
When writing JSON data from the Scala framework with JVM, you currently only have options to convert the
JsValue
instances to a string or byte array. However, if you have a particularly large JSON file, this can cause a large memory spike as it needs to buffer the whole file in memory before dumping to disk. Ideally there should be a function on the JSON facade object to expose writing aJsValue
to anOutputStream
, which could call the thewriteValue()
overload on Jackson'sObjectMapper
that takes anOutputStream
.The text was updated successfully, but these errors were encountered: