object JsonFraming
Provides JSON framing operators that can separate JSON objects from incoming pekko.util.ByteString objects.
- Source
- JsonFraming.scala
- Alphabetic
- By Inheritance
- JsonFraming
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Type Members
- class PartialObjectException extends FramingException
Thrown if upstream completes with a partial object in the buffer.
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- def objectScanner(maximumObjectLength: Int): Flow[ByteString, ByteString, NotUsed]
Returns a Flow that implements a "brace counting" based framing operator for emitting JSON objects.
Returns a Flow that implements a "brace counting" based framing operator for emitting JSON objects. It scans the incoming data stream for JSON objects and returns chunks of ByteStrings containing those objects.
This operator only frames JSON objects; it is not a general-purpose JSON parser and does not validate the object contents. A top-level JSON array is supported only when all its elements are objects. Other top-level JSON values, such as strings, numbers, booleans, or
null, are not supported. JSON Lines or NDJSON input is supported when every record is an object. A leading UTF-8 byte-order mark (BOM) must be removed before framing.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 JSON objects 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.
For streaming nested JSON structures, see Apache Pekko Connectors JSON support.
If the stream completes while mid-object, the stage will fail with a PartialObjectException.
- maximumObjectLength
The maximum length of allowed frames while decoding. If the maximum length is exceeded this Flow will fail the stream.
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])