博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala Learning(1): 使用Pattern Matching表达JSON
阅读量:5743 次
发布时间:2019-06-18

本文共 1525 字,大约阅读时间需要 5 分钟。

这是一个挺能展现Scala编程方式的例子,对正在熟悉Scala这门语言的开发者很有帮助。

Representing JSON

用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

Example

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/

你可能感兴趣的文章
java string截取两个字符串之间的值
查看>>
mycat的配置和学习
查看>>
VMWare虚拟机安装创建虚拟机的使用教程
查看>>
Android摄像头测量尺(Advanced Ruler Pro)使用方法
查看>>
HTMl与CSS
查看>>
数学建模-二胎政策对中国人口的影响
查看>>
qscoj 128 喵哈哈村的魔法源泉(2)(模仿快速幂,好题)
查看>>
预发环境与生产环境共享数据库时定时任务重复执行问题解决
查看>>
文件的权限查看
查看>>
UVa 11362 - Phone List
查看>>
Shine.js实现动态阴影效果
查看>>
怎样给你的Android 安装文件(APK)瘦身
查看>>
Spring 加载类路径外的资源文件
查看>>
redis获取当前时间精确到微秒
查看>>
国有航空为啥“放下身段”读春秋?
查看>>
读《建筑中的数学之旅》
查看>>
怎样用redis实现分布式锁
查看>>
兔子--ps中的基本工具总结(ps cs5)
查看>>
HDU 5386 Cover(模拟)
查看>>
Linux 静态链接库和动态连接库
查看>>