Extraction

object Extraction

Function to extract values from JSON AST using case classes.

See: ExtractionExamples.scala

Source:
Extraction.scala
class Object
trait Matchable
class Any

Value members

Concrete methods

def decompose(a: Any)(implicit formats: Formats): JValue

Decompose a case class into JSON.

Decompose a case class into JSON.

Example:

case class Person(name: String, age: Int)
implicit val formats: Formats = org.json4s.DefaultFormats
Extraction.decompose(Person("joe", 25)) == JObject(JField("age",JInt(25)) :: JField("name",JString("joe")) :: Nil)
Source:
Extraction.scala
def decomposeWithBuilder[T](a: Any, builder: JsonWriter[T])(implicit formats: Formats): T

Decompose a case class into JSON.

Decompose a case class into JSON.

Example:

case class Person(name: String, age: Int)
implicit val formats: Formats = org.json4s.DefaultFormats
Extraction.decompose(Person("joe", 25)) == JObject(JField("age",JInt(25)) :: JField("name",JString("joe")) :: Nil)
Source:
Extraction.scala
def extract[A](json: JValue)(implicit formats: Formats, mf: Manifest[A]): A

Extract a case class from JSON.

Extract a case class from JSON.

Throws:
MappingException

is thrown if extraction fails

See also:

org.json4s.JsonAST.JValue#extract

Source:
Extraction.scala
def extract(json: JValue, target: TypeInfo)(implicit formats: Formats): Any
def extract(json: JValue, scalaType: ScalaType)(implicit formats: Formats): Any
def extractOpt[A](json: JValue)(implicit formats: Formats, mf: Manifest[A]): Option[A]

Extract a case class from JSON.

Extract a case class from JSON.

See also:

org.json4s.JsonAST.JValue#extract

Source:
Extraction.scala
def flatten(json: JValue)(implicit formats: Formats): Map[String, String]

Flattens the JSON to a key/value map.

Flattens the JSON to a key/value map.

Source:
Extraction.scala
def internalDecomposeWithBuilder[T](a: Any, builder: JsonWriter[T])(implicit formats: Formats): Unit

Decompose a case class into JSON.

Decompose a case class into JSON.

This is broken out to avoid calling builder.result when we return from recursion

Source:
Extraction.scala
def loadLazyValValue(a: Any, name: String, defaultValue: Any): <FromJavaObject>

Load lazy val value

Load lazy val value

This is a fix for failed lazy val serialization from FieldSerializer (see org.json4s.native.LazyValBugs test).

We do this by finding the hidden lazy method which will have same name as the lazy val name but with suffix "$lzycompute" (for scala v2.10+), then invoke the method if found, and return the value.

The "$lzycompute" method naming could be changed in future so this method must be adjusted if that happens.

Value parameters:
a

Object to be serialized

defaultValue

Default value if lazy method is not found

name

Field name to be checked

Returns:

Value of invoked lazy method if found, else return the default value

Source:
Extraction.scala
def unflatten(map: Map[String, String], useBigDecimalForDouble: Boolean, useBigIntForLong: Boolean): JValue

Unflattens a key/value map to a JSON object.

Unflattens a key/value map to a JSON object.

Source:
Extraction.scala