class User {
String name;
int age;
}
object UserJsonFormat extends RootJsonFormat[User] {
def read(json: JsValue) = {
val name = json.asJsObject.fields("name").convertTo[String]
val age = json.asJsObject.fields("age").convertTo[Int]
User(name, age)
}
def write(user: User) = {
JsObject(
"name" -> JsString(user.name),
"age" -> JsNumber(user.age)
)
}
}
val userJson = """{
"name": "John Doe",
"age": 30
}"""
val user = userJson.parseJson.convertTo[User]
val userObject = User("Jane Smith", 25)
val userJson = userObject.toJson