gpt4 book ai didi

json - 如何在 spray json 中为 Boolean 类型实现自定义反序列化器

转载 作者:行者123 更新时间:2023-12-01 19:42:55 27 4
gpt4 key购买 nike

我的 API 模型中有几个 Boolean 属性,我想接受 true/false 以及 1 /0 值。我的第一个想法是实现自定义格式化程序:

object UserJsonProtocol extends DefaultJsonProtocol {

implicit object MyBooleanJsonFormat extends JsonFormat[Boolean] {
def write(value: Boolean): JsString = {
return JsString(value.toString)
}

def read(value: JsValue) = {
value match {
case JsString("1") => true
case JsString("0") => false
case JsString("true") => true
case JsString("false") => false
case _ => throw new DeserializationException("Not a boolean")
}
}
}

implicit val userFormat = jsonFormat15(User.apply)
}

其中 User 是具有 Boolean 属性的模型。不幸的是,上述解决方案没有效果 - 1/0 不被接受为 bool 值。有什么解决办法吗?

最佳答案

在修复了类型和模式匹配的一些问题后,它似乎可以工作了:

implicit object MyBooleanJsonFormat extends JsonFormat[Boolean] {
def write(value: Boolean): JsBoolean = {
return JsBoolean(value)
}

def read(value: JsValue) = {
value match {
case JsNumber(n) if n == 1 => true
case JsNumber(n) if n == 0 => false
case JsBoolean(true) => true
case JsBoolean(false) => false
case _ => throw new DeserializationException("Not a boolean")
}
}
}

关于json - 如何在 spray json 中为 Boolean 类型实现自定义反序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34897398/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com