使用 Scala CLI,你可以在一行中要求整个工具包
//> using toolkit latest
或者,你只需要求特定版本的 UPickle
//> using dep com.lihaoyi::upickle:3.1.0
在你的 build.sbt 文件中,你可以添加对工具包的依赖
lazy val example = project.in(file("example"))
.settings(
scalaVersion := "3.2.2",
libraryDependencies += "org.scala-lang" %% "toolkit" % "0.1.7"
)
或者,你只需要求特定版本的 UPickle
libraryDependencies += "com.lihaoyi" %% "upickle" % "3.1.0"
在你的 build.sc 文件中,你可以添加对 upickle 库的依赖
object example extends ScalaModule {
def scalaVersion = "3.2.2"
def ivyDeps =
Agg(
ivy"org.scala-lang::toolkit:0.1.7"
)
}
或者,你只需要求特定版本的 UPickle
ivy"com.lihaoyi::upickle:3.1.0"
使用 uJson 构建新的 JSON 结构
val obj: ujson.Value = ujson.Obj(
"library" -> "upickle",
"versions" -> ujson.Arr("1.6.0", "2.0.0", "3.1.0"),
"documentation" -> "https://com-lihaoyi.github.io/upickle/",
)
在 uJson 文档 中了解有关在 JSON 中构建的更多信息。
定义自定义 JSON 序列化
你可以通过映射 ujson.Value
来自定义数据类型的 ReadWriter
,如下所示
import upickle.default._
case class Bar(i: Int, s: String)
object Bar {
implicit val barReadWriter: ReadWriter[Bar] = readwriter[ujson.Value]
.bimap[Bar](
x => ujson.Arr(x.s, x.i),
json => new Bar(json(1).num.toInt, json(0).str)
)
}
val bar = Bar(5, "bar")
val json = upickle.default.write(bar)
println(json)
// prints: [5, "bar"]
import upickle.default.*
case class Bar(i: Int, s: String)
object Bar:
given ReadWriter[Bar] = readwriter[ujson.Value]
.bimap[Bar](
x => ujson.Arr(x.s, x.i),
json => new Bar(json(1).num.toInt, json(0).str)
)
val bar = Bar(5, "bar")
val json = upickle.default.write(bar)
println(json)
// prints: [5, "bar"]
在 uPickle 文档 中了解有关自定义 JSON 序列化的更多信息。
此页面的贡献者
内容
- 简介
- 使用 MUnit 进行测试
- 如何编写测试?
- 如何运行测试?
- 如何运行单个测试?
- 如何测试异常?
- 如何编写异步测试?
- 如何管理测试的资源?
- MUnit 还能做什么?
- 使用 OS-Lib 处理文件和进程
- 如何读取目录?
- 如何读取文件?
- 如何写入文件?
- 如何运行进程?
- OS-Lib 还能做什么?
- 使用 uPickle 处理 JSON
- 如何在 JSON 中访问值?
- 如何修改 JSON?
- 如何将 JSON 反序列化为对象?
- 如何将对象序列化为 JSON?
- 如何读取和写入 JSON 文件?
- uPickle 还能做什么?
- 使用 sttp 发送 HTTP 请求
- 如何发送请求?
- 如何构建 URI 和查询参数?
- 如何发送带正文的请求?
- 如何发送和接收 JSON?
- 如何通过 HTTP 上传文件?
- sttp 还能做什么?