Class JsonFraming$


  • public class JsonFraming$
    extends java.lang.Object
    Provides JSON framing operators that can separate valid JSON objects from incoming ByteString objects.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static JsonFraming$ MODULE$
      Static reference to the singleton instance of this Scala object.
    • Constructor Summary

      Constructors 
      Constructor Description
      JsonFraming$()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Flow<ByteString,​ByteString,​NotUsed> objectScanner​(int maximumObjectLength)
      Returns a Flow that implements a "brace counting" based framing operator for emitting valid JSON chunks.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • MODULE$

        public static final JsonFraming$ MODULE$
        Static reference to the singleton instance of this Scala object.
    • Constructor Detail

      • JsonFraming$

        public JsonFraming$()
    • Method Detail

      • objectScanner

        public Flow<ByteString,​ByteString,​NotUsed> objectScanner​(int maximumObjectLength)
        Returns a Flow that implements a "brace counting" based framing operator for emitting valid JSON chunks. It scans the incoming data stream for valid JSON objects and returns chunks of ByteStrings containing only those valid chunks.

        Typical examples of data that one may want to frame using this operator include:

        **Very large arrays**:

        
           [{"id": 1}, {"id": 2}, [...], {"id": 999}]
         

        **Multiple concatenated JSON objects** (with, or without commas between them):

        
           {"id": 1}, {"id": 2}, [...], {"id": 999}
         

        The framing works independently of formatting, i.e. it will still emit valid JSON elements even if two elements are separated by multiple newlines or other whitespace characters. And of course is insensitive (and does not impact the emitting frame) to the JSON object's internal formatting.

        If the stream completes while mid-object, the stage will fail with a PartialObjectException.

        Parameters:
        maximumObjectLength - The maximum length of allowed frames while decoding. If the maximum length is exceeded this Flow will fail the stream.