zio.json.internal

Members list

Concise view

Type members

Classlikes

case object ByteNone extends ByteOption

Attributes

Graph
Supertypes
trait Singleton
trait Product
trait Mirror
trait Product
trait Equals
class Object
trait Matchable
class Any
Self type
sealed abstract class ByteOption

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object ByteNone.type
class ByteSome
case class ByteSome(value: Byte) extends ByteOption

Attributes

Graph
Supertypes
trait Product
trait Equals
class Object
trait Matchable
class Any
case object DoubleNone extends DoubleOption

Attributes

Graph
Supertypes
trait Singleton
trait Product
trait Mirror
trait Product
trait Equals
class Object
trait Matchable
class Any
Self type
sealed abstract class DoubleOption

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object DoubleNone.type
case class DoubleSome(value: Double) extends DoubleOption

Attributes

Graph
Supertypes
trait Product
trait Equals
class Object
trait Matchable
class Any
final class FastCharSequence(s: Array[Char]) extends CharSequence

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
final class FastStringWrite(initial: Int) extends Write

Attributes

Graph
Supertypes
trait Write
class Object
trait Matchable
class Any
case object FloatNone extends FloatOption

Attributes

Graph
Supertypes
trait Singleton
trait Product
trait Mirror
trait Product
trait Equals
class Object
trait Matchable
class Any
Self type
sealed abstract class FloatOption

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object FloatNone.type
class FloatSome
case class FloatSome(value: Float) extends FloatOption

Attributes

Graph
Supertypes
trait Product
trait Equals
class Object
trait Matchable
class Any
case object IntNone extends IntOption

Attributes

Graph
Supertypes
trait Singleton
trait Product
trait Mirror
trait Product
trait Equals
class IntOption
class Object
trait Matchable
class Any
Self type
IntNone.type
sealed abstract class IntOption

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object IntNone.type
class IntSome
case class IntSome(value: Int) extends IntOption

Attributes

Graph
Supertypes
trait Product
trait Equals
class IntOption
class Object
trait Matchable
class Any
object Lexer

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
Lexer.type
case object LongNone extends LongOption

Attributes

Graph
Supertypes
trait Singleton
trait Product
trait Mirror
trait Product
trait Equals
class Object
trait Matchable
class Any
Self type
sealed abstract class LongOption

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object LongNone.type
class LongSome
case class LongSome(value: Long) extends LongOption

Attributes

Graph
Supertypes
trait Product
trait Equals
class Object
trait Matchable
class Any
sealed trait RetractReader

A Reader that can retract and replay the last char that it read.

A Reader that can retract and replay the last char that it read.

This is essential when parsing contents that do not have a terminator character, e.g. numbers, whilst preserving the non-significant character for further processing.

Attributes

Graph
Supertypes
class Reader
trait Closeable
trait Readable
class Object
trait Matchable
class Any
Known subtypes

Total, fast, number parsing.

Total, fast, number parsing.

The Java and Scala standard libraries throw exceptions when we attempt to parse an invalid number. Unfortunately, exceptions are very expensive, and untrusted data can be maliciously constructed to DOS a server.

This suite of functions mitigates against such attacks by building up the numbers one character at a time, which has been shown through extensive benchmarking to be orders of magnitude faster than exception-throwing stdlib parsers, for valid and invalid inputs. This approach, proposed by alexknvl, was also benchmarked against regexp-based pre-validation.

Note that although the behaviour is identical to the Java stdlib when given the canonical form of a primitive (i.e. the .toString) of a number there may be differences in behaviour for non-canonical forms. e.g. the Java stdlib may reject "1.0" when parsed as an BigInteger but we may parse it as a 1, although "1.1" would be rejected. Parsing of BigDecimal preserves the trailing zeros on the right but not on the left, e.g. "000.00001000" will be "1.000e-5", which is useful in cases where the trailing zeros denote measurement accuracy.

BigInteger, BigDecimal, Float and Double have a configurable bit limit on the size of the significand, to avoid OOM style attacks, which is 128 bits by default.

Results are contained in a specialisation of Option that avoids boxing.

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
case object ShortNone extends ShortOption

Attributes

Graph
Supertypes
trait Singleton
trait Product
trait Mirror
trait Product
trait Equals
class Object
trait Matchable
class Any
Self type
sealed abstract class ShortOption

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object ShortNone.type
class ShortSome
case class ShortSome(value: Short) extends ShortOption

Attributes

Graph
Supertypes
trait Product
trait Equals
class Object
trait Matchable
class Any
final class StringMatrix(val xs: Array[String], aliases: Array[(String, Int)])

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type
final class WithRetractReader(in: Reader) extends RetractReader with AutoCloseable

Attributes

Graph
Supertypes
class Reader
trait Closeable
trait Readable
class Object
trait Matchable
class Any
trait Write

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
final class WriteWriter(out: Writer) extends Write

Attributes

Graph
Supertypes
trait Write
class Object
trait Matchable
class Any