json4s 对案例的响应 class

json4s response to case class

我收到此 json 响应,如何为 page_views 创建 Scala Case Class ??

"page_views": {
    "2015-12-30T21:30:00+05:30": 4,
    "2016-01-08T15:30:00+05:30": 25,
    "2016-01-13T11:30:00+05:30": 9,
    "2016-01-13T12:30:00+05:30": 8,
    "2016-01-14T10:30:00+05:30": 21,
    "2016-01-21T12:30:00+05:30": 19,
    "2016-01-21T17:30:00+05:30": 4,
    "2016-01-22T17:30:00+05:30": 2,
    "2016-02-02T10:30:00+05:30": 14,
    "2016-02-24T12:30:00+05:30": 11,
    "2016-02-26T09:30:00+05:30": 12
  },

首先定义你想要的案例class。假设它类似于 case class PageView(date:myDateType,numberViews:Long)。那么您就不会陷入基本情况,即您收到的 json 具有显式写入的字段 datenumberViews,例如 {"date":"xxx","numberViews":123}。所以使用 json4s 创建一个案例 class 并让它完成剩下的工作是不够的,你将不得不编写一个自定义(反)序列化器(他们有一个例子 here, 在页面上搜索 'Serializer')。

您可以跟进 this tutorial,其中介绍了如何将 json 字符串解析为您的模型。它还涵盖了您可能需要应用的一些常用转换,以将 json 转换为您的案例 class

但是你的情况有点奇怪,page_views contain/be 不应该是一个数组吗?如果您不知道其中包含哪些字段,如何处理 page_views json 对象?

经过多次尝试,我终于成功了。我使用 Map 绑定到 JSON 字段。

case class Test(page_views: Map[String, Int])