Converts the given XML to JSON.
Converts the given XML to JSON.
The following rules are used in the conversion:
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
String while we might want it as an Int. This is easy to fix by mapping
JString(s) to JInt(s.toInt). The second problem is more subtle: the
conversion function decides to use a JSON array because there's more than
one user element in the XML. Therefore a structurally equivalent XML
document which happens to have just one user element will generate a JSON
document without a JSON array. This is rarely a desired outcome. Both of
these problems can be fixed by the following map invocation:
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
}
Converts the given JSON to XML.
Converts the given JSON to XML.
The following rules are used in conversion:
Use the map function 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
})
Functions to convert between JSON and XML.