object Xml
Functions to convert between JSON and XML.
- Alphabetic
- By Inheritance
- Xml
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toJson(xml: NodeSeq): JValue
Converts the given XML to JSON.
Converts the given XML to JSON.
The following rules are used in the conversion:
- an XML leaf element is converted to a JSON string
- an XML parent element is converted to a JSON object and its children to JSON fields
- XML elements with the same name at the same level are converted to a JSON array
- XML attributes are converted to JSON fields
For example:
scala> val xml = <users> <user> <id>1</id> <name>Harry</name> </user> <user> <id>2</id> <name>David</name> </user> </users> scala> val json = toJson(xml) scala> prettyRender(json) { "users":{ "user":[{ "id":"1", "name":"Harry" },{ "id":"2", "name":"David" }] } }
Now, the above example has two problems. First, the id is converted to a
Stringwhile we might want it as anInt. This is easy to fix by mappingJString(s)toJInt(s.toInt). The second problem is more subtle: the conversion function decides to use a JSON array because there's more than oneuserelement in the XML. Therefore a structurally equivalent XML document which happens to have just oneuserelement will generate a JSON document without a JSON array. This is rarely a desired outcome. Both of these problems can be fixed by the followingmapinvocation:json mapField { case JField("id", JString(s)) => JField("id", JInt(s.toInt)) case JField("user", x: JObject) => JField("user", JArray(x :: Nil)) case x => x } - def toString(): String
- Definition Classes
- AnyRef → Any
- def toXml(json: JValue): NodeSeq
Converts the given JSON to XML.
Converts the given JSON to XML.
The following rules are used in conversion:
- JSON primitives are converted to XML leaf elements
- JSON objects are converted to XML elements
- JSON arrays are recursively converted to XML elements
Use the
mapfunction to preprocess JSON before conversion to adjust the end result. For instance a common conversion is to encode arrays as comma separated Strings since XML does not have an array type:toXml(json map { case JField("nums",JArray(ns)) => JField("nums",JString(ns.map(_.values).mkString(","))) case x => x }) - final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()