spray-json是一个轻量级的,简介的和高效的使用Scala实现的json
它拥有以下特征:
- 一个简单不可变的模型的json语言元素
- 一个高效的json解析器
- 可选择既紧凑又漂亮的json到string的打印(格式化输出)
- 基于类的自定义对象的(反)序列化(没有反射,没有入侵)
- 没有外部依赖包
spray可以做以下转换:
*JSON字符串
*基于JsValue的JSON抽象语法树(JSON Abstract Syntax Tree(ASTs))
*任意的scala类型的实例
如下图描述
安装
spray-json 可以从 http://repo.spray.io/仓库获得
最终的发布版本是1.3.2 ,对应的构建在scala 2.10.5和scala 2.11.6
如果你使用SBT 使用下面方依赖将spray-json加入到你的项目中
libraryDependencies += "io.spray" %% "spray-json" % "1.3.2"
使用方法
spray-json 非常容易使用.
仅仅需要导入相关方法
import spray.json._ import DefaultJsonProtocol._ //如果你不提供自己的协议(见下文)
如下样例:
- 解析JSON字符串转换为树结构(Abstract Syntax Tree (AST))实例
val source = """{ "some": "JSON source" }""" val jsonAst = source.parseJson // or JsonParser(source)
输出:
source: String = { "some": "JSON source" } jsonAst: spray.json.JsValue = {"some":"JSON source"}
- 打印JSON AST 返回一个string既可以用CompactPrinter也可以用PrettyPrinter输出
val json = jsonAst.prettyPrint //格式化输出val json1 = jsonAst.compactPrint //输出一行
输出:
json: String = { "some": "JSON source" } json1: String = {"some":"JSON source"}
- 调用其toJson方法将scala的任意类型转换为一个Json AST
val jsonAst = List(1, 2, 3).toJson
输出:
jsonAst: spray.json.JsValue = [1,2,3]
- 调用convertTo方法将JSON AST 转换为Scala object
val jsonAst = List(1, 2, 3).toJson jsonAst.convertTo[List[Int]]
输出:
res0: List[Int] = List(1, 2, 3)
为了使对象的步骤3和步骤4的工作你需要指定隐式类型的值的范围,提供JsonFormat[T]实例为T,T(直接或间接)所使用的所有类型。
时间: 2024-10-05 05:12:08