我试图在这里找到一些帮助来应用 DefaultJsonProtocol 的 JsonFormat 扩展
包含对象序列的类。
所以对于课程来说:
class Person(val name: String, [......], val adresses: Seq[Adress])
class Adress(val streetname: String, val plz: BigDecimal, val city: String)
现在我想应用我的 JsonFormat:
object PersonJsonProtocol extends DefaultJsonProtocol {
implicit object PersonJsonFormat extends RootJsonFormat[Person] {
def write(pers: Person) = JsObject(
"name" -> JsString(pers.name),
[......],
"adresses" -> JsArray(pers.adresses)
)
def read(value: JsValue) = {...}
}
但实际上我不知道该怎么做。
我搜索了 Spray-json 文档并通过 google、stackoverflow & Co.
我对 Scala/Spray 完全陌生,也许我只是没有抓住重点。所以也许这里有人很友善地帮助我。没有地址序列我就可以工作。
使用示例中提供的 JsArray,我得到类型不匹配。它期待 List[JsValue] 但也转换为列表,不匹配仍然存在。
我还尝试插入一个单独的 Adress JsonProtocol 并通过以下方式包含它:
"addresses" -> Adress JsonFormat.write(pers.adresses) 但它又是一个序列...
您不需要为每个案例类编写一个 DefaultJsonProtocol,除非您想要一些特殊的逻辑(格式化、过滤...)
您是否尝试过简单地使用默认的案例类序列化?
implicit val formatPerson = jsonFormat6(Adress)
implicit val formatAddress = jsonFormat3(Adress)
jsonFormat 中的数字'number' 代表您的案例类别中的成员数量。
然后在序列化 Person 时,spray-json 将处理嵌套的 Address 集合。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)