json - 喷json解析和NullPointerException

标签 json scala nullpointerexception spray-json

我有一个错误:

spray.json.ProductFormats$class.productElement2Field NullPointerException

这是我的 json 反序列化代码:
object DomainJsonProtocol extends DefaultJsonProtocol {
implicit val loginInfoFormat = jsonFormat(LoginInfo, "userid", "email", "password", "rememberme")
implicit val requestStatusFormat = jsonFormat(RequestStatus, "status", "message")
implicit val requestHolderFormat = jsonFormat(RequestHolder, "requestStatus", "loginInfo")
}

case class RequestHolder(requestStatus : RequestStatus, loginInfo: LoginInfo) {
  def this(requestStatus : RequestStatus) = this(requestStatus, null)
}
case class LoginInfo(userid: Int, email: String, password: String, rememberme: Boolean)
case class RequestStatus(status : Int, message: String)

val requestHolder = content.asJson.convertTo[RequestHolder] //The error is hereHere is 

我想这可能是因为类 RequestHolder 中的构造函数重载。

更新:
json内容为:
{"requestStatus":{"status":0,"message":""},"loginInfo":{"userid":0,"email":"123","password":"123","rememberme":false}}

最佳答案

我有一个类似的问题,我的问题是由于我定义 jsonreaders 的顺序。我有一个这样的例子:

implicit val multipleThings: RootJsonFormat[Things] = jsonFormat1(Things)
implicit val singleThing: RootJsonFormat[Thing] = jsonFormat1(Thing)

这里Things案例类有一个列表 Thing的。

这不起作用,因为第一个隐含地需要第二个。像这样重新排序它们:
implicit val singleThing: RootJsonFormat[Thing] = jsonFormat1(Thing)
implicit val multipleThings: RootJsonFormat[Things] = jsonFormat1(Things)

让它工作。

全部归功于:https://stackoverflow.com/a/29280316/1539208

关于json - 喷json解析和NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21663105/

相关文章:

scala - 禁用 Akka ActorSystem 的默认日志记录

scala - 使用 Intellij 调试 Scala 宏

java - 什么是 NullPointerException,我该如何解决?

java - 尝试在空对象引用上调用 ScrollView.removeAllViews()

python - 如何使用 simplejson 正确解析 JSON?

python - python中用点路径解析Json

javascript - JSON Stringify 无法解码值

javascript - asp.net mvc2 上的 jQuery ajax 帖子

scala - 如何将 scala fs2 流转换为字符串?

java - 为什么 String.valueOf(null) 会抛出 NullPointerException?