summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias <mathias@decodified.com>2016-04-25 10:32:00 +0200
committerMathias <mathias@decodified.com>2016-04-25 10:32:00 +0200
commit1f98f29bf1a5f2835321b45212515795a95c49b6 (patch)
tree15eb41471d523aad67f6daf07827845214af866d
parent4fbde3a833cb122c71aaf85a1b3bbd31e130cb62 (diff)
parentaae2c6ef9e33e204aa4040689465804150ec226b (diff)
downloadspray-json-1f98f29bf1a5f2835321b45212515795a95c49b6.tar.gz
spray-json-1f98f29bf1a5f2835321b45212515795a95c49b6.tar.bz2
spray-json-1f98f29bf1a5f2835321b45212515795a95c49b6.zip
Merge pull request #183 from ktoso/wip-quoted-BIG-numbers-ktoso
+#182 allows BigInt/BigDecimal to be obtained from JsStrings
-rw-r--r--src/main/scala/spray/json/BasicFormats.scala2
-rw-r--r--src/test/scala/spray/json/BasicFormatsSpec.scala6
2 files changed, 8 insertions, 0 deletions
diff --git a/src/main/scala/spray/json/BasicFormats.scala b/src/main/scala/spray/json/BasicFormats.scala
index 96751f6..65b9ecb 100644
--- a/src/main/scala/spray/json/BasicFormats.scala
+++ b/src/main/scala/spray/json/BasicFormats.scala
@@ -79,6 +79,7 @@ trait BasicFormats {
}
def read(value: JsValue) = value match {
case JsNumber(x) => x
+ case JsString(x) => BigDecimal(x)
case x => deserializationError("Expected BigDecimal as JsNumber, but got " + x)
}
}
@@ -90,6 +91,7 @@ trait BasicFormats {
}
def read(value: JsValue) = value match {
case JsNumber(x) => x.toBigInt
+ case JsString(x) => BigInt(x)
case x => deserializationError("Expected BigInt as JsNumber, but got " + x)
}
}
diff --git a/src/test/scala/spray/json/BasicFormatsSpec.scala b/src/test/scala/spray/json/BasicFormatsSpec.scala
index 629c223..00da813 100644
--- a/src/test/scala/spray/json/BasicFormatsSpec.scala
+++ b/src/test/scala/spray/json/BasicFormatsSpec.scala
@@ -105,6 +105,9 @@ class BasicFormatsSpec extends Specification with DefaultJsonProtocol {
"convert a JsNumber to a BigDecimal" in {
JsNumber(42).convertTo[BigDecimal] mustEqual BigDecimal(42)
}
+ """convert a JsString to a BigDecimal (to allow the quoted-large-numbers pattern)""" in {
+ JsString("9223372036854775809").convertTo[BigDecimal] mustEqual BigDecimal("9223372036854775809")
+ }
}
"The BigIntJsonFormat" should {
@@ -114,6 +117,9 @@ class BasicFormatsSpec extends Specification with DefaultJsonProtocol {
"convert a JsNumber to a BigInt" in {
JsNumber(42).convertTo[BigInt] mustEqual BigInt(42)
}
+ """convert a JsString to a BigInt (to allow the quoted-large-numbers pattern)""" in {
+ JsString("9223372036854775809").convertTo[BigInt] mustEqual BigInt("9223372036854775809")
+ }
}
"The UnitJsonFormat" should {