grapple.json
Type members
Classlikes
Provides JSON utilities.
Provides JSON utilities.
import scala.language.implicitConversions
import grapple.json.{ *, given }
// Create JSON object
val user = Json.obj("id" -> 1000, "name" -> "lupita")
// Create JSON array
val info = Json.arr(user, "/home/lupita", 8L * 1024 * 1024 * 1024)
// Parse JSON text
val root = Json.parse("""{ "id": 0, "name": "root" }""")
case class User(id: Int, name: String)
given userOutput: JsonOutput[User] with
def write(u: User) = Json.obj("id" -> u.id, "name" -> u.name)
// Convert value to JSON object
val nobody = Json.toJson(User(65534, "nobody"))
Defines JSON input and output conversions.
Defines JSON input and output conversions.
Defines JSON array builder.
Defines JSON array builder.
import scala.language.implicitConversions
import grapple.json.{ *, given }
val user = JsonArrayBuilder()
.add(1000)
.add("lupita")
.add(Set("lupita", "sudoer"))
.toJsonArray()
assert { user(0).as[Int] == 1000 }
assert { user(1).as[String] == "lupita" }
assert { user(2).as[Set[String]] == Set("lupita", "sudoer") }
- See also:
Defines JSON exception.
Defines JSON exception.
- Value parameters:
- cause
underlying cause
- message
detail message
- Constructor:
Constructs exception with detail message and underlying cause.
Defines JSON generator.
Defines JSON generator.
import java.io.StringWriter
import scala.language.implicitConversions
import grapple.json.{ *, given }
val buf = StringWriter()
val out = JsonGenerator(buf)
try
out.writeStartObject() // start root object
out.write("id", 1000)
out.write("name", "lupita")
out.writeStartArray("groups") // start nested array
out.write("lupita")
out.write("admin")
out.write("sudoer")
out.writeEnd() // end nested array
out.writeStartObject("info") // start nested object
out.write("home", "/home/lupita")
out.write("storage", "8 GiB")
out.writeEnd() // end nested object
out.writeEnd() // end root object
out.flush()
val json = Json.parse(buf.toString)
assert { json("id") == JsonNumber(1000) }
assert { json("name") == JsonString("lupita") }
assert { json("groups") == Json.arr("lupita", "admin", "sudoer") }
assert { json("info") == Json.obj("home" -> "/home/lupita", "storage" -> "8 GiB") }
finally
out.close()
- See also:
- Companion:
- object
Provides JSON generator factory.
Provides JSON generator factory.
- Companion:
- class
Defines JSON generator error.
Defines JSON generator error.
- Value parameters:
- message
detail message
Defines JSON input conversion.
Defines JSON input conversion.
import scala.language.implicitConversions
import grapple.json.{ *, given }
case class User(id: Int, name: String)
// Define how to convert JsonValue to User
given userInput: JsonInput[User] =
case json: JsonObject => User(json("id"), json("name"))
case _ => throw IllegalArgumentException("Expected JSON object")
val json = Json.obj("id" -> 0, "name" -> "root")
assert { json.as[User] == User(0, "root") }
- See also:
Defines JSON object builder.
Defines JSON object builder.
import scala.language.implicitConversions
import grapple.json.{ *, given }
val user = JsonObjectBuilder()
.add("id", 1000)
.add("name", "lupita")
.add("groups", Set("lupita", "sudoer"))
.toJsonObject()
assert { user("id").as[Int] == 1000 }
assert { user("name").as[String] == "lupita" }
assert { user("groups").as[Set[String]] == Set("lupita", "sudoer") }
- See also:
Defines JSON output conversion.
Defines JSON output conversion.
import scala.language.implicitConversions
import grapple.json.{ *, given }
case class User(id: Int, name: String)
// Define how to convert User to JsonValue
given userOutput: JsonOutput[User] =
user => Json.obj("id" -> user.id, "name" -> user.name)
val users = Json.arr(User(0, "root"), User(1000, "lupita"))
assert { users(0) == Json.obj("id" -> 0, "name" -> "root") }
assert { users(1) == Json.obj("id" -> 1000, "name" -> "lupita") }
- See also:
Defines JSON parser.
Defines JSON parser.
import scala.language.implicitConversions
import grapple.json.{ *, given }
import grapple.json.JsonParser.Event
val parser = JsonParser("""{ "id": 1000, "name": "lupita", "groups": ["lupita", "admin"] }""")
try
// Get first event (start root object)
assert { parser.next() == Event.StartObject }
// Get field name and value
assert { parser.next() == Event.FieldName("id") }
assert { parser.next() == Event.Value(1000) }
// Get field name and value
assert { parser.next() == Event.FieldName("name") }
assert { parser.next() == Event.Value("lupita") }
// Get field name and value
assert { parser.next() == Event.FieldName("groups") }
assert { parser.next() == Event.StartArray } // start nested array
assert { parser.next() == Event.Value("lupita") }
assert { parser.next() == Event.Value("admin") }
assert { parser.next() == Event.EndArray } // end nested array
// Get final event (end root object)
assert { parser.next() == Event.EndObject }
// No more events
assert { !parser.hasNext }
finally
parser.close()
- See also:
- Companion:
- object
Provides JSON parser factory and other utilities.
Provides JSON parser factory and other utilities.
- Companion:
- class
Defines JSON parser error.
Defines JSON parser error.
- Value parameters:
- message
detail message
- offset
character offset of parser error
Defines JSON reader.
Defines JSON reader.
import scala.language.implicitConversions
import grapple.json.{ *, given }
val in = JsonReader("""{ "id": 1000, "name": "lupita" }""")
try
val user = in.read()
assert { user("id").as[Int] == 1000 }
assert { user("name").as[String] == "lupita" }
finally
in.close()
- See also:
- Companion:
- object
Defines JSON writer.
Defines JSON writer.
import java.io.StringWriter
import scala.language.implicitConversions
import grapple.json.{ *, given }
val buf = StringWriter()
val out = JsonWriter(buf)
try
val user = Json.obj("id" -> 1000, "name" -> "lupita")
out.write(user)
val json = Json.parse(buf.toString)
assert { json == user }
finally
out.close()
- See also:
- Companion:
- object
Converts BigDecimal
to JsonNumber
.
Converts BigDecimal
to JsonNumber
.
Converts BigInt
to JsonNumber
.
Converts BigInt
to JsonNumber
.
Converts Boolean
to JsonBoolean
.
Converts Boolean
to JsonBoolean
.
Converts Byte
to JsonNumber
.
Converts Byte
to JsonNumber
.
Converts Double
to JsonNumber
.
Converts Double
to JsonNumber
.
Converts Failure
to JsonNull
.
Converts Failure
to JsonNull
.
Converts Float
to JsonNumber
.
Converts Float
to JsonNumber
.
Converts Int
to JsonNumber
.
Converts Int
to JsonNumber
.
Converts JsonValue
to BigDecimal
.
Converts JsonValue
to BigDecimal
.
Converts JsonValue
to BigInt
.
Converts JsonValue
to BigInt
.
Converts JsonValue
to Boolean
.
Converts JsonValue
to Boolean
.
Converts JsonValue
to Byte
.
Converts JsonValue
to Byte
.
Converts JsonValue
to Double
.
Converts JsonValue
to Double
.
Converts JsonValue
to Float
.
Converts JsonValue
to Float
.
Casts JsonValue
to JsonArray
.
Casts JsonValue
to JsonArray
.
Casts JsonValue
to JsonBoolean
.
Casts JsonValue
to JsonBoolean
.
Casts JsonValue
to JsonNull
.
Casts JsonValue
to JsonNull
.
Casts JsonValue
to JsonNumber
.
Casts JsonValue
to JsonNumber
.
Casts JsonValue
to JsonObject
.
Casts JsonValue
to JsonObject
.
Casts JsonValue
to JsonString
.
Casts JsonValue
to JsonString
.
Returns JsonValue
as is.
Returns JsonValue
as is.
This instance is required to perform actions such as the following:
import scala.language.implicitConversions
import grapple.json.{ Json, JsonValue, given }
val json = Json.obj("values" -> Json.arr("abc", 123, true))
// Requires jsonValueToJsonValue
val list = json("values").as[List[JsonValue]]
Converts JsonValue
to Long
.
Converts JsonValue
to Long
.
Converts JsonValue
to Short
.
Converts JsonValue
to Short
.
Converts JsonValue
to String
.
Converts JsonValue
to String
.
Converts Long
to JsonNumber
.
Converts Long
to JsonNumber
.
Converts None
to JsonNull
.
Converts None
to JsonNull
.
Converts Short
to JsonNumber
.
Converts Short
to JsonNumber
.
Converts String
to JsonString
.
Converts String
to JsonString
.
Givens
Givens
Converts Either
to JsonValue
.
Converts Either
to JsonValue
.
Converts Iterable
to JsonArray
.
Converts Iterable
to JsonArray
.
Converts JsonValue
to collection.
Converts JsonValue
to collection.
Converts JsonValue
to Either
.
Converts JsonValue
to Either
.
Returns JsonValue
as is.
Returns JsonValue
as is.
This instance is required to perform actions such as the following:
import scala.language.implicitConversions
import grapple.json.{ Json, JsonValue, given }
val json = Json.obj("values" -> Json.arr("abc", 123, true))
// Requires jsonValueToJsonValue
val list = json("values").as[List[JsonValue]]
Converts Map
to JsonObject
.
Converts Map
to JsonObject
.
Converts Some
to JsonValue
or returns JsonNull
if None
.
Converts Some
to JsonValue
or returns JsonNull
if None
.
Converts Success
to JsonValue
or returns JsonNull
if Failure
.
Converts Success
to JsonValue
or returns JsonNull
if Failure
.
Extensions
Extensions
Gets value in JSON object.
Gets value in JSON object.
- Value parameters:
- name
field name
- Throws:
- ClassCastException
if not JsonObject
Gets value in JSON array.
Gets value in JSON array.
- Value parameters:
- index
array index
- Throws:
- ClassCastException
if not JsonArray
Collects values with given field name while traversing nested objects and arrays.
Collects values with given field name while traversing nested objects and arrays.
import grapple.json.{ Json, \\, given }
val json = Json.parse("""{
"node": {
"name": "localhost",
"users": [
{ "id": 0, "name": "root" },
{ "id": 1000, "name": "lupita" }
]
}
}""")
val names = (json \\ "name").map(_.as[String])
assert { names == Seq("localhost", "root", "lupita") }
- Value parameters:
- name
field name