首页 > 代码库 > spray-json

spray-json

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 = http://www.mamicode.com/{"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 = http://www.mamicode.com/[1,2,3]>
  • 调用convertTo方法将JSON AST 转换为Scala object
val jsonAst = List(1, 2, 3).toJsonjsonAst.convertTo[List[Int]]

输出:

res0: List[Int] = List(1, 2, 3)

为了使对象的步骤3和步骤4的工作你需要指定隐式类型的值的范围,提供JsonFormat[T]实例为T,T(直接或间接)所使用的所有类型。

 

spray-json