summaryrefslogtreecommitdiff
path: root/tools/shared/src/main/scala/scala/scalajs/tools/json/AbstractJSONImpl.scala
blob: ad5d79ef7376e96c55f01e60dc59dd626d175705 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package scala.scalajs.tools.json

import java.io.{Reader, Writer}

/** A JSON implementation. Has a representation type and methods to convert
 *  this type to/from primitives, lists and maps.
 *
 *  Further, it can write/read a value of this type to a string.
 */
private[json] trait AbstractJSONImpl {

  type Repr

  def fromString(x: String): Repr
  def fromNumber(x: Number): Repr
  def fromBoolean(x: Boolean): Repr
  def fromList(x: List[Repr]): Repr
  def fromMap(x: Map[String, Repr]): Repr

  def toString(x: Repr): String
  def toNumber(x: Repr): Number
  def toBoolean(x: Repr): Boolean
  def toList(x: Repr): List[Repr]
  def toMap(x: Repr): Map[String, Repr]

  def serialize(x: Repr): String
  def serialize(x: Repr, writer: Writer): Unit

  def deserialize(str: String): Repr
  def deserialize(reader: Reader): Repr

}