本文共 1525 字,大约阅读时间需要 5 分钟。
这是一个挺能展现Scala编程方式的例子,对正在熟悉Scala这门语言的开发者很有帮助。
用Scala来表达JSON(Java Script Object Notation)结构,
{ "firstname" : "John", "lastname" : "Smith", "address" : { "street" : "21 2nd Street", "state" : "NY", "postalCode" : 10021 }, "phoneNumbers" : [ { "type" : "home", "number" : "212 555-1234" }, { "type" : "fax", "number : "646 555-4567" } ] }
Scala表示JSON的一种类结构:
abstract class JSONcase class JSeq (elems: List[JSON]) extends JSONcase class JObj (bindings: Map[String, JSON]) extends JSONcase class JNum (num: Double) extends JSONcase class JStr (str: String) extends JSONcase class JBool(b: Boolean) extends JSONcase object JNull extends JSON
val data = JObj(Map( "firstName" -> JStr("John"), "lastName" -> JStr("Smith"), "address" -> JObj(Map( "street" -> JStr("21 2nd Street"), "state" -> JStr("NY"), "postalCode" -> JNum(10021) )), "phoneNumbers" -> JSeq(List( JObj(Map( "type" -> JStr("home"), "number" -> JStr("212 555-1234") )), JObj(Map( "type" -> JStr("fax"), "number"-> JStr("646 555-4567") )) ))))
利用Pattern Matching,展示一个输出JSON string串的方法:
def show(json: JSON): String = json match { case JSeq(elems) => "[" + (elems map show mkString ", ") + "]" case JObj(bindings) => val assocs = bindings map { case (key, value) => "\"" + key + "\": " + show(value) } "{" + (assocs mkString ", ") + "}" case JNum(num) => num.toString case JStr(str) => '\"' + str + '\"' case JBool(b) => b.toString case JNull => "null"}
参考自
全文完 :)
转载地址:http://htszx.baihongyu.com/