如何在 scala 和 play 框架中从 Format 创建 OFormat

2024-01-05

如何以与我创建案例类相同的简单方式为案例类创建 OFormat[T]Json.Format[T]?


这是我发现的(非常)简单的解决方案: 创建一个辅助对象:

import play.api.libs.json.{Format, OFormat, JsObject, JsValue, JsResult}

object JsonUtil {

  def oFormat[T](format:Format[T]) : OFormat[T] = {
    val oFormat: OFormat[T] = new OFormat[T](){
      override def writes(o: T): JsObject = format.writes(o).as[JsObject]
      override def reads(json: JsValue): JsResult[T] = format.reads(json)
    }
    oFormat
  }
}

并像这样使用它:

import play.modules.reactivemongo.json._
implicit val formatFileToSave : Format[FileToSaveData]  = Json.format[FileToSaveData]
implicit val oFormatFileToSave: OFormat[FileToSaveData] = JsonUtil.oFormat(formatFileToSave)

我希望明确传递“格式”,但是当我尝试使用以下命令运行时

def oFormat[T]()(implicit format:Format[T])我有java.lang.RuntimeException

如果有人可以解释为什么或如何使用“隐式”而不用它RuntimeException我很高兴听到。

我正在使用 Java 8 运行,玩 2.4.0 和 scala 2.11.7 (显然FileToSaveData是我想要序列化的案例类)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 scala 和 play 框架中从 Format 创建 OFormat 的相关文章

  • 比较 javascript 元素和 scala 变量的 Play 框架 Twirl 模板

    如下面的代码示例所示 我想比较 scala 辅助元素内的 javascript 元素 然而 即使存在元素 abcde 它也始终返回 false 除了使用标签之外 如何获取 scala 辅助元素内的 javascript 值 appSeq S
  • Scala 中用于阻止调用的 Future

    The Akka文档说 you may be tempted to just wrap the blocking call inside a Future and work with that instead but this strate
  • Scala 中的高级类型 [重复]

    这个问题在这里已经有答案了 我正在阅读 Scala 中的函数式编程一书 在 Monoids 章节中 他们讨论了 Monoid 接口 如下所示 trait Monoid A def op a1 A a2 A A def zero A 后来 他
  • 在 Scala 中反转地图的优雅方法

    目前正在学习Scala 需要反转Map 来进行一些反转值 gt 键查找 我一直在寻找一种简单的方法来做到这一点 但只想到了 Map origMap map kvp gt kvp 2 gt kvp 1 有人有更优雅的方法吗 假设值是唯一的 则
  • 在 Scala 中创建任意类作为 monad 实例

    为了使任何东西都可以在 monad 上下文中操作 如果使用 Haskell 我只需在任何地方为给定类型添加类 Monad 的实现 所以我根本不接触数据类型定义的来源 像 人造的东西 data Z a MyZLeft a MyZRight a
  • 与文件名中的冒号“:”作斗争

    我有以下代码 用于加载大量 csv gz 并将它们转储到其他文件夹中 并将源文件名作为一列 object DailyMerger extends App def allFiles path File List File val parts
  • Akka Stream - 根据 Flow 中的元素选择 Sink

    我正在使用 Akka 流创建一个简单的消息传递服务 该服务就像邮件递送一样 其中来自源的元素包括destination and content like case class Message destination String conte
  • 将 Scala AST 转换为源代码

    给定一个 Scala AST 有没有办法生成 Scala 源代码 我正在研究通过解析 分析其他 Scala 源代码来自动生成 Scala 源代码的方法 任何提示将不胜感激 我已经成功使用Scala 重构 http scala refacto
  • 标识符中下划线的 Scala 风格指南

    我已经接受了许多其他语言的观点 即下划线在标识符中具有与字母表一样多的自由度 因此 v and v 另外 尾随下划线是受到推崇的避免与保留关键字产生歧义 class case val abc 0
  • Scala 类型别名破坏了类型兼容性

    我始终相信 如有必要 类型别名总是会扩展为其原始类型 但是 这里有一个麻烦制造者 def a P a Option P type Res List P result type alias Nil Res Replace this line
  • 什么是 ZIO 错误通道以及如何了解要放入其中的内容?

    ZIO https zio dev https zio dev 是一个 scala 框架 其核心是ZIO R E A 数据结构及其站点给出了三个参数的以下信息 ZIO The ZIO R E A 数据类型具有三个类型参数 R 环境类型 该效
  • 具有定期更新的静态数据集的结构化流

    将流媒体与静态数据集合并是结构化流媒体的一个重要功能 但在每个批次中 数据集都会从数据源刷新 由于这些源并不总是那么动态 因此在指定的时间段 或批次数 内缓存静态数据集会提高性能 在指定的时间段 批次数之后 将从源重新加载数据集 否则从缓存
  • SBT - 使用汇编时多项目合并策略和构建 sbt 结构

    我有一个由多个较小项目组成的项目 其中一些项目相互依赖 例如 有一个依赖于 commons 项目的实用程序项目 其他项目可能依赖于公用事业或公共设施 也可能不依赖于两者 在 build sbt 中 我在文件末尾有程序集合并策略 以及程序集中
  • 将括号子集映射到字符

    我正在尝试创建一个 Scala 方法 该方法将采用一个父括号组 表示为字符串 然后将每个括号子组映射到不同的字母 然后它应该将它们放入它返回的映射中 所以基本上我调用以下方法 如下所示 val s 2 x 3 6 val map mapPa
  • 这是一种在 Akka FSM 中内部监视到第一个状态的转换的方法吗?

    考虑从状态 Idle 开始的 FSM actor startWith Idle IdleData 我想监视到第一个状态的转换 从无状态 I tried onTransition case gt Idle gt Wasn t called 根
  • 在 Scala 中实现不区分大小写比较的字符串类

    我有许多带有不区分大小写的字段的类 我想将这些类的实例放入 HashMap 中 并通过不区分大小写的字符串查找它们 我不是每次想通过字符串索引实例或通过字符串查找实例时都使用 toLowerCase 而是尝试将此逻辑封装在 CaseInse
  • 在 scalaz 中免费实施

    Haskell 中的免费实现是 data Free f a Pure a Free f Free f a 而 Scalaz 中的实现是 sealed abstract class Free S A private case class Re
  • 为什么这个 Clojure 程序在可变数组上运行如此慢?

    剧透警告 这是 代码降临 第六天的第一部分 我试图解决this http adventofcode com day 6Clojure 和 Scala 中的问题 Scala 程序在我的 Macbook Air 上运行良好 几秒钟内就完成了 然
  • 将结构数组分解为 Spark 中的列

    我想将结构数组分解为列 由结构字段定义 例如 root arr array nullable true element struct containsNull true id long nullable false name string
  • Scala 中 Null/Nothing/Unit 的用法

    我刚刚读过 http oldfashionedsoftware com 2008 08 20 a post about nothing http oldfashionedsoftware com 2008 08 20 a post abou

随机推荐