diff options
author | Mathias <mathias@spray.cc> | 2011-12-06 13:22:37 +0100 |
---|---|---|
committer | Mathias <mathias@spray.cc> | 2011-12-06 13:23:02 +0100 |
commit | 94b1fba92d40568c642a0b86c719c4bcc0865b54 (patch) | |
tree | 0c9a278e636426f99435b7e4f155cc2fe03495ff /src/main/scala/cc/spray/json/JsValue.scala | |
parent | 701be7bcf0a295c3de272a11e7cfb477db7ed026 (diff) | |
download | spray-json-94b1fba92d40568c642a0b86c719c4bcc0865b54.tar.gz spray-json-94b1fba92d40568c642a0b86c719c4bcc0865b54.tar.bz2 spray-json-94b1fba92d40568c642a0b86c719c4bcc0865b54.zip |
Remove JsField, turn JsObject(List[JsField]) into JsObject(Map[String, JsValue])
Diffstat (limited to 'src/main/scala/cc/spray/json/JsValue.scala')
-rw-r--r-- | src/main/scala/cc/spray/json/JsValue.scala | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/src/main/scala/cc/spray/json/JsValue.scala b/src/main/scala/cc/spray/json/JsValue.scala index cc1af91..f4dbf91 100644 --- a/src/main/scala/cc/spray/json/JsValue.scala +++ b/src/main/scala/cc/spray/json/JsValue.scala @@ -18,7 +18,9 @@ package cc.spray.json -import collection.mutable.ListBuffer +import collection.mutable.{LinkedHashMap, ListBuffer} +import collection.immutable.ListMap + /** * The general type of a JSON AST node. @@ -37,23 +39,14 @@ sealed trait JsValue { /** * A JSON object. */ -case class JsObject(fields: List[JsField]) extends JsValue { - lazy val asMap: Map[String, JsValue] = { - val b = Map.newBuilder[String, JsValue] - for (JsField(name, value) <- fields) b += ((name, value)) - b.result() - } -} +case class JsObject(fields: Map[String, JsValue]) extends JsValue object JsObject { - def apply(members: JsField*) = new JsObject(members.toList) + // we use a ListMap in order to preserve the field order + def apply(members: JsField*) = new JsObject(ListMap(members: _*)) + def apply(members: List[JsField]) = new JsObject(ListMap(members: _*)) } /** - * The members/fields of a JSON object. - */ -case class JsField(name: String, value: JsValue) extends JsValue - -/** * A JSON array. */ case class JsArray(elements: List[JsValue]) extends JsValue |