diff options
author | Sergey Nastich <nastich@users.noreply.github.com> | 2018-09-19 13:57:53 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-19 13:57:53 -0400 |
commit | 1b979318d85ea6035084253596cf076151cef309 (patch) | |
tree | d5f64a3893b2581807020a88c8c2b28f277fbd53 /src/main/scala/xyz/driver/core/json.scala | |
parent | 60ad2abd17a50c8bd73bfe75084984b4de27bd79 (diff) | |
download | driver-core-1b979318d85ea6035084253596cf076151cef309.tar.gz driver-core-1b979318d85ea6035084253596cf076151cef309.tar.bz2 driver-core-1b979318d85ea6035084253596cf076151cef309.zip |
Improve PhoneNumber (#222)
* Add support for extensions
* Add PathMatcher and allow parsing JSON from string
* Add a number of convenience methods which are to be used instead of `toString`
Diffstat (limited to 'src/main/scala/xyz/driver/core/json.scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/json.scala | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/main/scala/xyz/driver/core/json.scala b/src/main/scala/xyz/driver/core/json.scala index 4daf127..edc2347 100644 --- a/src/main/scala/xyz/driver/core/json.scala +++ b/src/main/scala/xyz/driver/core/json.scala @@ -181,10 +181,18 @@ object json extends PathMatchers with Unmarshallers { } implicit object phoneNumberFormat extends RootJsonFormat[PhoneNumber] { - private val basicFormat = jsonFormat2(PhoneNumber.apply) - override def write(obj: PhoneNumber): JsValue = basicFormat.write(obj) - override def read(json: JsValue): PhoneNumber = { - PhoneNumber.parse(basicFormat.read(json).toString).getOrElse(deserializationError("Invalid phone number")) + + private val basicFormat = jsonFormat3(PhoneNumber.apply) + + def write(obj: PhoneNumber): JsValue = basicFormat.write(obj) + + def read(json: JsValue): PhoneNumber = { + val maybePhone = json match { + case JsString(number) => PhoneNumber.parse(number) + case obj: JsObject => PhoneNumber.parse(basicFormat.read(obj).toString) + case _ => None + } + maybePhone.getOrElse(deserializationError("Invalid phone number")) } } |