summaryrefslogtreecommitdiff
path: root/src/main/scala/cc/spray/json/CollectionFormats.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/cc/spray/json/CollectionFormats.scala')
-rw-r--r--src/main/scala/cc/spray/json/CollectionFormats.scala9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/main/scala/cc/spray/json/CollectionFormats.scala b/src/main/scala/cc/spray/json/CollectionFormats.scala
index a17c43f..c6c3403 100644
--- a/src/main/scala/cc/spray/json/CollectionFormats.scala
+++ b/src/main/scala/cc/spray/json/CollectionFormats.scala
@@ -47,15 +47,16 @@ trait CollectionFormats {
*/
implicit def mapFormat[K :JsonFormat, V :JsonFormat] = new RootJsonFormat[Map[K, V]] {
def write(m: Map[K, V]) = JsObject {
- m.toList.map { t =>
- t._1.toJson match {
- case JsString(x) => JsField(x, t._2.toJson)
+ m.map { field =>
+ field._1.toJson match {
+ case JsString(x) => x -> field._2.toJson
case x => throw new SerializationException("Map key must be formatted as JsString, not '" + x + "'")
}
}
}
def read(value: JsValue) = value match {
- case JsObject(fields) => fields.map(field => (JsString(field.name).convertTo[K], field.value.convertTo[V])).toMap
+ case JsObject(fields) =>
+ fields.map(field => (JsString(field._1).convertTo[K], field._2.convertTo[V])) (collection.breakOut)
case x => throw new DeserializationException("Expected Map as JsObject, but got " + x)
}
}