summaryrefslogtreecommitdiff
path: root/src/main/scala/cc/spray/json/JsValue.scala
diff options
context:
space:
mode:
authorMathias <mathias@spray.cc>2011-12-06 13:22:37 +0100
committerMathias <mathias@spray.cc>2011-12-06 13:23:02 +0100
commit94b1fba92d40568c642a0b86c719c4bcc0865b54 (patch)
tree0c9a278e636426f99435b7e4f155cc2fe03495ff /src/main/scala/cc/spray/json/JsValue.scala
parent701be7bcf0a295c3de272a11e7cfb477db7ed026 (diff)
downloadspray-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.scala21
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