【问题标题】:No Json serializer found when trying to compose JsObject尝试编写 JsObject 时未找到 Json 序列化程序
【发布时间】:2017-04-26 23:00:51
【问题描述】:

我的 json 是 JsValu

// this is a list of JsObject extracted from a json
val parents = (json \ "parents").as[List[JsObject]]

// a map between parent name to list of their kids
val kidsNamesMap = (json \ "kids").as[Map[String,List[String]]]

// creating a new JsObject
 val newParent = parent + ("kids" -> Json.toJson(kidsNamesMap.getOrElse(parentName,"")))

编译时出现错误:

找不到类型 Object 的 Json 序列化程序。尝试实现一个隐式 写入或格式化此类型。 val newParent = parent + ("kids" -> Json.toJson(kidsNamesMap.getOrElse(parentName,"")))

但我现在确定要添加什么作家,之前为我的案例课程写过作家,但这里我不确定......

谢谢

【问题讨论】:

  • 那是因为kidsNamesMap.getOrElse(parentName,"") 不会真正有类型。从地图中,您要么得到一个 List[String],要么得到一个字符串 (.getOrElse)。理想的方法是将其替换为:val newParent = parent + ("kids" -> { kidsNamesMap.get(parentName).map(Json.toJson(_)).getOrElse(JsString("")) })
  • 请将其添加为答案 :)
  • @JohnBiggs 完成。

标签: scala playframework playframework-2.0


【解决方案1】:

那是因为kidsNamesMap.getOrElse(parentName,"") 不会真正有类型。从地图中,您要么得到一个List[String],要么得到一个String (.getOrElse)。 理想的方法是将其替换为:

val newParent = parent + ( "kids" -> { kidsNamesMap.get(parentName).map(Json.toJson(_)).getOrElse(J‌​sString("")) } )

【讨论】:

    猜你喜欢
    • 2015-09-17
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 2016-08-26
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    相关资源
    最近更新 更多