json - 如何将 arry:string 转换为 Scala 中的特定模型
问题描述
我想转换array: String
成Seq[Message]
...
案例类:
case class Message(name: String, sex: String)
资源:
[
{ "name": "Bean",
"sex": "F"
},
{
"name": "John",
"sex": "M"
}
]
目的地
Seq[Person]
怎么转换??代码...
解决方案
您需要使用某种解码器/反序列化器将字符串解码为case class
. scala中有大量的解码器。我最喜欢的一个是circe,因为它很实用,也可以很好地与 scalajs 配合使用。
import io.circe._, io.circe.generic.auto._, io.circe.parser._, io.circe.syntax._
case class Message(name: String, sex: String)
val encoded =
"""
|[
| { "name": "Bean",
| "sex": "F"
| },
| {
| "name": "John",
| "sex": "M"
| }
|]
""".stripMargin
val decoded: Either[Error, List[Message]] = decode[List[Message]](encoded)
decoded match {
case Right(e) => println("success: " + e)
case Left(l) => println("failure: "+ l)
}
输出:
success: List(Message(Bean,F), Message(John,M))
如果您正在寻找与 java 兼容的简单明了,请查看https://github.com/FasterXML/jackson-module-scala
推荐阅读
- sql - 创建 Oracle 更新触发器
- keras - 预计最后一个激活层的形状为 (1,),但得到的数组形状为 (4,)
- ios - 点击时如何停止标签栏项目图像的背景宽度变化?
- python - 字符串索引超出范围python 3.7
- pandas - Pandas groupby:使用两列创建 groupby 时如何按正确顺序对工作日进行排序?
- go - make(map) 和 map{} 之间的区别
- asp.net-core - UWP 和 WPF 的 SignalR 类库
- c# - 如何将 DialogDebuggerVisualizer 分配给所有对象(对象)
- java - Spring Data + Hibernate = 异常 :(
- sql - 如何使用 SQL 中的新唯一主键从联接创建表?