Flag to indicate the macros can use the type default values (e.g.
Flag to indicate the macros can use the type default values (e.g. default values for the case class parameters) when applicable.
MacroOptions with DefaultValues
Next is the trait that allows Simplified Json syntax :
Next is the trait that allows Simplified Json syntax :
Example :
JsObject(Seq( "key1" -> JsString("value"), "key2" -> JsNumber(123), "key3" -> JsObject(Seq("key31" -> JsString("value31"))) )) == Json.obj( "key1" -> "value", "key2" -> 123, "key3" -> obj("key31" -> "value31")) JsArray(JsString("value"), JsNumber(123), JsBoolean(true)) == Json.arr( "value", 123, true )
There is an implicit conversion from any Type with a Json Writes to JsValueWrapper which is an empty trait that shouldn't end into unexpected implicit conversions.
Compile-time base options for macro usage.
Compile-time base options for macro usage.
Json.using[Json.MacroOptions].format[Foo]
// equivalent to Json.format[Foo]
Alias for MacroOptions with DefaultValues
Alias for MacroOptions with DefaultValues
Json.using[WithDefaultValues]
JSON facade with some macro options.
JSON facade with some macro options.
the compile-time options
Returns a JsArray with given items.
Returns a JsArray with given items.
Converts a JsValue to its string representation,
escaping all non-ascii characters using \uXXXX
syntax.
Converts a JsValue to its string representation,
escaping all non-ascii characters using \uXXXX
syntax.
This is particularly useful when the output JSON will be executed as javascript, since JSON is not a strict subset of javascript (see JSON: The JavaScript subset that isn't).
scala> Json.asciiStringify(JsString("some\u2028text\u2029")) res0: String = "some\u2028text\u2029" scala> Json.stringify(JsString("some\u2028text\u2029")) res1: String = "sometext"
the JsValue to convert A String with the json representation with all non-ascii characters escaped.
Returns a JsonFacade using the current JSON configuration.
Returns a JsonFacade using the current JSON configuration.
the type of compile-time configuration
// Materializes a `Reads[Foo]`, // with the configuration resolved at compile time val r: Reads[Foo] = Json.configured.reads[Foo]
Creates a OFormat[T]
by resolving, at compile-time,
the case class fields or sealed family, and the required implicits.
Creates a OFormat[T]
by resolving, at compile-time,
the case class fields or sealed family, and the required implicits.
If any missing implicit is discovered, compiler will break with corresponding error.
the type for which the handler must be materialized
import play.api.libs.json.Json case class User(userName: String, age: Int) implicit val userWrites = Json.format[User] // macro-compiler replaces Json.format[User] by injecting into compile chain // the exact code you would write yourself. This is strictly equivalent to: implicit val userWrites = ( (__ \ implicitly[JsonConfiguration].naming("userName")).format[String] and (__ \ implicitly[JsonConfiguration].naming("age")).format[Int] )(User.apply, unlift(User.unapply))
Converts a JsValue to a value of requested type T
.
Converts a JsValue to a value of requested type T
.
The type of conversion result, only supported if a Reads implicit is available for.
the JsValue to convert
Returns a JsObject with given fields.
Returns a JsObject with given fields.
the object fields specified as pairs of name and value
Parses some bytes representing a JSON input, and returns it as a JsValue.
Parses some bytes representing a JSON input, and returns it as a JsValue.
The character encoding used will be automatically detected as UTF-8, UTF-16 or UTF-32, as per the heuristics in RFC-4627.
the byte array to parse
Parses a stream representing a JSON input, and returns it as a JsValue.
Parses a stream representing a JSON input, and returns it as a JsValue.
the InputStream to parse
Parses a String representing a JSON input, and returns it as a JsValue.
Parses a String representing a JSON input, and returns it as a JsValue.
the String to parse
Converts a JsValue to its pretty string representation using default pretty printer (line feeds after each fields and 2-spaces indentation).
Converts a JsValue to its pretty string representation using default pretty printer (line feeds after each fields and 2-spaces indentation).
scala> Json.stringify(Json.obj( "field1" -> Json.obj( "field11" -> "value11", "field12" -> Json.arr("alpha", 123L) ) )) res0: String = {"field1":{"field11":"value11","field12":["alpha",123]}} scala> Json.prettyPrint(res0) res1: String = { "field1" : { "field11" : "value11", "field12" : [ "alpha", 123 ] } }
the JsValue to convert A String with the json representation.
Creates a Reads[T]
by resolving, at compile-time,
the case class fields or sealed family, and the required implicits.
Creates a Reads[T]
by resolving, at compile-time,
the case class fields or sealed family, and the required implicits.
If any missing implicit is discovered, compiler will break with corresponding error.
the type for which the handler must be materialized
import play.api.libs.json.Json case class User(userName: String, age: Int) implicit val userReads = Json.reads[User] // macro-compiler replaces Json.reads[User] by injecting into compile chain // the exact code you would write yourself. This is strictly equivalent to: implicit val userReads = ( (__ \ implicitly[JsonConfiguration].naming("userName")).read[String] and (__ \ implicitly[JsonConfiguration].naming("age")).read[Int] )(User)
Converts a JsValue to its string representation.
Converts a JsValue to its string representation.
scala> Json.stringify(Json.obj( "field1" -> Json.obj( "field11" -> "value11", "field12" -> Json.arr("alpha", 123L) ) )) res0: String = {"field1":{"field11":"value11","field12":["alpha",123]}} scala> Json.stringify(res0) res1: String = {"field1":{"field11":"value11","field12":["alpha",123]}}
the JsValue to convert
a String with the json representation
Converts a JsValue to bytes (using UTF-8 encoding).
Converts a JsValue to bytes (using UTF-8 encoding).
the JsValue to convert
an Array[Byte]
representing the UTF-8-encoded JSON
Converts any object writeable value to a JsObject.
Converts any object writeable value to a JsObject.
A value is writeable as an object, if a OWrites implicit is available for its type.
the type of the value to be written as JsObject
the value to convert as JSON object
Converts any writeable value to a JsValue.
Converts any writeable value to a JsValue.
A value is writeable if a Writes implicit is available for its type.
the type of the value to be written as JSON
the value to convert as JSON
Returns an inference context to call the JSON macros, using explicit compile-time options.
Returns an inference context to call the JSON macros, using explicit compile-time options.
the compile-time options
Creates a OWrites[T]
by resolving, at compile-time,
the case class fields or sealed family, and the required implicits.
Creates a OWrites[T]
by resolving, at compile-time,
the case class fields or sealed family, and the required implicits.
If any missing implicit is discovered, compiler will break with corresponding error.
the type for which the handler must be materialized
import play.api.libs.json.Json case class User(userName: String, age: Int) implicit val userWrites = Json.writes[User] // macro-compiler replaces Json.writes[User] by injecting into compile chain // the exact code you would write yourself. This is strictly equivalent to: implicit val userWrites = ( (__ \ implicitly[JsonConfiguration].naming("userName")).write[String] and (__ \ implicitly[JsonConfiguration].naming("age")).write[Int] )(unlift(User.unapply))
Helper functions to handle JsValues.