【问题标题】:Json4s: raw json valueJson4s:原始 json 值
【发布时间】:2017-11-09 09:11:58
【问题描述】:

我有非常动态的网络服务协议,我需要存储原始 JSON 值以存储完整的响应。

我正在使用 scala 和 json4s。

case class DataClass(value: JValue)
case class Response(status: String, data: DataClass)

解析后

{
  "status": "awesome",
  "data": {
    "name": "John",
    "age" : 20
  }
}

但是这样一来,json4s总是返回JNothing

JsonMethods.parse(json).extract[Response]

返回

响应(真棒,DataClass(JNothing))

【问题讨论】:

  • 看起来很明显。您的 DataClass 案例类与实际数据的结构不匹配

标签: json scala json4s


【解决方案1】:

请试试这个:

// case class DataClass(value: JValue)
case class DataClass(name: String, age: Int)
case class Response(status: String, data: DataClass)

val s = """{
  "status": "awesome",
  "data": {
    "name": "John",
    "age" : 20
  }
}"""
val json = parse(s).extract[Response] // json: Response = Response(awesome,DataClass(John,20))

您应该让您的案例类与您的 json 字符串匹配。在这种情况下,json字符串中没有“value”,只有“name”和“age”。如果班级解决了问题,请使用“姓名”和“年龄”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2015-12-02
    • 2021-01-15
    • 1970-01-01
    相关资源
    最近更新 更多