Skip to content

Instantly share code, notes, and snippets.

@lossyrob
Created February 20, 2014 15:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lossyrob/9116354 to your computer and use it in GitHub Desktop.
Save lossyrob/9116354 to your computer and use it in GitHub Desktop.
Mao to Json
// TODO: See if this is any good and worth refactoring. From some internal Scala code written by someone at Azavea.
package object json {
def quote(s:String) = if(s == null) "\"\"" else "\"" + (s.replace("\\", "\\\\").replace("\"", "\\\"")) + "\""
def quote(a:Any):String = if(a == null) "\"\"" else quote(a.toString)
def arrayToJson(left:String, as:Array[String], right:String) = if (as.length > 0) {
val n = as.foldLeft(0)(_ + _.length + 1) + left.length + right.length
val b = new StringBuilder(n)
b.append(left)
b.append(as(0))
var i = 1
while (i < as.length) {
b.append(",")
b.append(as(i))
i += 1
}
b.append(right)
b.toString
} else {
left + right
}
def mapToJson(m:scala.collection.Map[String, Any]) = {
val as = m.toArray.map { case (k, v) => quote(k) + ":" + v.toString }
arrayToJson("{", as, "}")
}
// This is *horrible*................ ARG
def mapToJsonQuoted(m:scala.collection.Map[String, Any]) = {
val as = m.toArray.map { case (k, v) => quote(k) + ":" + quote(v.toString) }
arrayToJson("{", as, "}")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment