如何在spray-json中表示可选字段?

2024-02-28

我的请求有一个可选字段:

case class SearchRequest(url: String, nextAt: Option[Date])

我的协议是:

object SearchRequestJsonProtocol extends DefaultJsonProtocol {
    implicit val searchRequestFormat = jsonFormat(SearchRequest, "url", "nextAt")
}

如何将 nextAt 字段标记为可选,以便正确读取和接受以下 JSON 对象:

{"url":"..."}
{"url":"...", "nextAt":null}
{"url":"...", "nextAt":"2012-05-30T15:23Z"}

实际上我并不关心 null 情况,但如果你有详细信息,那就太好了。我正在使用 Spray-json,并且我的印象是,如果原始 JSON 对象中不存在该字段,则使用 Option 会跳过该字段。


对我有用(spray-json 1.1.1 scala 2.9.1 build)

import cc.spray.json._
import cc.spray.json.DefaultJsonProtocol._

// string instead of date for simplicity
case class SearchRequest(url: String, nextAt: Option[String])

// btw, you could use jsonFormat2 method here
implicit val searchRequestFormat = jsonFormat(SearchRequest, "url", "nextAt")

assert {
  List(
    """{"url":"..."}""",
    """{"url":"...", "nextAt":null}""",
    """{"url":"...", "nextAt":"2012-05-30T15:23Z"}""")
  .map(_.asJson.convertTo[SearchRequest]) == List(
    SearchRequest("...", None),
    SearchRequest("...", None),
    SearchRequest("...", Some("2012-05-30T15:23Z")))
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在spray-json中表示可选字段? 的相关文章

  • Scala REPL 中的递归重载语义 - JVM 语言

    使用 Scala 的命令行 REPL def foo x Int Unit def foo x String Unit println foo 2 gives error type mismatch found Int 2 required
  • ';'预期但发现“导入” - Scala 和 Spark

    我正在尝试使用 Spark 和 Scala 来编译一个独立的应用程序 我不知道为什么会收到此错误 topicModel scala 2 expected but import found error import org apache sp
  • Spark:出现心跳错误后丢失数据

    我有一个在 Spark 集群上运行的 Python 程序 有四个工作线程 它处理一个包含大约 1500 万条记录的巨大 Oracle 表 检查结果后发现大约有600万条记录没有插入 我的写入功能如下 df write format jdbc
  • 如何将模型从 ML Pipeline 保存到 S3 或 HDFS?

    我正在尝试保存 ML Pipeline 生成的数千个模型 正如答案中所示here https stackoverflow com questions 32121046 run 3000 random forest models by gro
  • 如何以最佳方式传递元组参数?

    如何以最佳方式传递元组参数 Example def foo Int Int def bar a Int b Int 现在我想传递的输出foo to bar 这可以通过以下方式实现 val fooResult foo bar fooResul
  • 在 Akka/Scala 中使用带有 future 的 mapTo

    我最近开始使用 Akka Scala 编码 遇到了以下问题 通过范围内的隐式转换 例如 implicit def convertTypeAtoTypeX a TypeA TypeX TypeX just some kinda convers
  • 过滤字符串上的 Spark DataFrame 包含

    我在用火花1 3 0 http spark apache org releases spark release 1 3 0 html and 火花阿夫罗1 0 0 https github com databricks spark avro
  • Spark日期格式问题

    我在火花日期格式中观察到奇怪的行为 实际上我需要转换日期yy to yyyy 日期转换后 日期应为 20yy 我尝试过如下 2040年后失败 import org apache spark sql functions val df Seq
  • 如何将模型结果保存到文本文件?

    我正在尝试将从模型生成的频繁项集保存到文本文件中 该代码是 Spark ML 库中 FPGrowth 示例的示例 Using saveAsTextFile直接在模型上写入 RDD 位置而不是实际值 import org apache spa
  • HashPartitioner 是如何工作的?

    我阅读了文档HashPartitioner http spark apache org docs 1 3 1 api java index html org apache spark HashPartitioner html 不幸的是 除了
  • 对两种类型之间的二元关系进行建模

    有企业 也有人 用户可以对某个企业点赞或发表评论 但效果是一样的can not发生在一个人身上 当用户发布有关某个企业的内容或对其点赞时 该企业就被称为target喜欢或帖子 trait TargetingRelation Targetin
  • 在 Spark MLlib 上使用 Java 中的 Breeze

    在尝试从Java使用MLlib时 使用微风矩阵运算的正确方法是什么 例如scala 中的乘法很简单 matrix vector 相应的功能在Java中是如何表达的 有一些方法 例如 colon times 可以通过正确的方式调用 breez
  • Spark:如何使用crossJoin

    我有两个数据框 df1有 100000 行并且df2有 10000 行 我想创建一个df3这是两者的交叉连接 val df3 df1 crossJoin df2 这将产生 10 亿行 尝试在本地运行它 但似乎需要很长时间 您认为本地可以实现
  • Scala:什么是 CompactBuffer?

    我试图弄清楚 CompactBuffer 的含义 和迭代器一样吗 请解释其中的差异 根据 Spark 的文档 它是 ArrayBuffer 的替代方案 可以提供更好的性能 因为它分配的内存更少 以下是 CompactBuffer 类文档的摘
  • scala 提供类似 C++ 模板的东西吗?

    我来自 C 并试图了解 scala 的类型系统 考虑以下 C 模板类 template
  • 在scala 2.13中,为什么有时无法显式调用类型类?

    这是 Shapeless 2 3 3 中的一个简单示例 val book author gt gt Benjamin Pierce title gt gt Types and Programming Languages id gt gt 2
  • 为什么自类型类可以声明类

    我知道 Scala 只能混合特征 这对于依赖注入和蛋糕模式是有意义的 我的问题是为什么我仍然可以声明一个需要另一个 类 但不需要特征的类 Code class C class D self C gt 这仍然编译成功 我认为它应该编译失败 因
  • 将 Tuple2 的值部分(即映射)合并为按 Tuple2 的键分组的单个映射

    我在 Scala 和 Spark 中这样做 我有和Dataset of Tuple2 as Dataset String Map String String 下面是值的示例Dataset A 1 gt 100 2 gt 200 3 gt 1
  • 使用 Shapeless 记录组合任意数量的状态更改函数

    我正在尝试移植combineReducers从 Redux 到 Scala 这个想法是每个函数控制它的一小部分状态并且combineReducers创建一个控制整个状态的函数 我无法找出应该像这样工作的函数所需的签名 sealed trai
  • Scala 和 Python 的通行证

    我想知道 是否有相当于 python 的 pass 表达式 这个想法是编写没有实现的方法签名 并编译它们只是为了对某些库原型的这些签名进行类型检查 我能够使用以下方法模拟这种行为 def pass A A throw new Excepti

随机推荐

  • 滑动效果就像三星打电话和发消息一样[重复]

    这个问题在这里已经有答案了 我需要在列表视图中实现滑动 就像在三星 Android 设备中一样 在通话记录中 当我们从左向右滑动时 正在放置呼叫 从右向左滑动则放置消息 使用 swipeListView 可以吗滑动列表查看演示 https
  • 如何在 Eigen 中初始化 SparseVector

    如何在 Eigen 中初始化 SparseVector 下面的代码 define EIGEN YES I KNOW SPARSE MODULE IS NOT STABLE YET include
  • 关联数组中的双索引

    我正在使用 Node js 构建服务器 我将代表用户的对象存储在关联数组中 现在这些对象的索引就是该连接的套接字 ID 使用 Socket io 库 我通过简单地执行 socket id 来获取它 因此对于处理我的请求的每个处理程序 我始终
  • Spring Boot、Spring-Security - 新的基于组件的安全配置中的 BcrypPasswordEncoder

    我正在尝试使用新的基于组件 不带 WebSecurityConfigurerAdapter 配置并设置我的安全配置 如下所示 安全配置 java 文件 package com tito userservice security import
  • 页面重定向后 Yii2 用户身份丢失

    我正在 yii2 中进行用户登录 但不是使用活动记录 而是由另一台服务器处理用户用户名和密码的验证 因此 以下是我所做的解决方法 in LoginForm php 我做了一些改变validatePassword which apiRest
  • Azure 模拟器连接错误

    我安装了 Azure 存储 v3 4 和计算模拟器 v2 5 并且可以在计算模拟器中检查我的部署 但每当我尝试可视化表或 blob 的内容时 我都会收到以下信息来自 Visual Studio 的错误 无法加载文件或程序集 Microsof
  • Python NetworkX 从作为根的节点在有向图中查找子图

    我正在编写一个代码来从有向图中提取信息 该图也有循环 例如 A gt B gt C gt D A gt E gt F gt A B gt F gt G 从这个图中 我想创建一个子图或节点列表 其中输入可以是任何节点 输出可以是输入节点是根的
  • 在视图控制器转换中获取子视图的最终帧

    我正在 iOS 7 中的视图控制器之间实现自定义转换 特别是 我在视图控制器 A 和视图控制器 B 中具有相同的按钮 唯一的区别在于其位置 在视图控制器 B 中稍高一些 我希望在从视图控制器 A 到视图控制器 B 的转换中 A 中的按钮向上
  • 如何解码包含 \x3c 等的 Feedburner 结果

    Feed Burner 更改了他们的博客服务返回结果 它返回类似于以下内容的 JavaScript 块 文档 write x3cdiv 类 x3d x22feedburnerFeedBlock x22 id x3d x22RitterIns
  • Office.js |在 Excel 加载项中实施单点登录

    我正在使用 Office js javascript 和 React 创建 Excel 加载项 想要使用功能区按钮实现单点登录流程 用户成功登录后只想向用户显示任务窗格 我已经使用共享运行时 manifest xml 配置了加载项 我已在功
  • vb.net中如何转换日期格式?

    我收到的 xml 响应日期格式字符串是 MM dd yyyy h mm ss a 但我需要转换其他日期格式 dd MMM yy HH mm vb net中如何转换日期格式 请给我任何建议 假设您想将 xml 字符串值转换为正确的值DateT
  • 每次按下菜单按钮时都会双重回调 onMenuOpened/onPanelClosed

    在我的 Android 应用程序中 我想收集有关何时 多久 打开和关闭溢出 三个点 操作栏菜单 未选择项目 的统计信息 对于这个任务我已经覆盖了onMenuOpened and onPanelClosed内的方法Activity 然而 在所
  • 从 Java 拖放到 Windows 资源管理器

    我想用 Java 创建一个应用程序 列出一个目录并向其添加拖放支持 以便将文件从该目录复制到打开的资源管理器窗口 反之亦然 Windows 系统 虽然添加对从 Windows 资源管理器到 Java 应用程序的拖放的支持非常容易 但当操作从
  • oracle sql listagg [重复]

    这个问题在这里已经有答案了 SELECT deptno LISTAGG ename WITHIN GROUP ORDER BY ename AS employees FROM emp GROUP BY deptno 错误 ORA 00923
  • Java如何访问try-catch块之外的变量

    我是java初学者 正在玩try catch块 但是 我无法获取try catch块之外的变量 以下代码有效 class factorial public static void main String args try int num I
  • Buildroot:仅构建一个包作为共享和静态库,所有其他包仅共享

    buildroot 提供了构建的可能性 仅静态 只分享 或共享库和静态库 所选软件包的数量 分配的配置元素是BR2 STATIC LIBS BR2 STATIC LIBS and BR2 SHARED STATIC LIBS 问题 是否可以
  • ECS 任务/容器的 Terraform AWS CloudWatch 日志组

    我正在尝试使用 Terraform 创建一个 AWS ECS 任务 它将日志放入 CloudWatch 上的特定日志组中 问题是容器定义位于 JSON 文件中 我无法将 CloudWatch 组名称从 tf 文件映射到该 json 文件 容
  • 打破 tcl 中的父循环

    我在 while 循环中有一个 for 循环 我有一个条件要打破 for 循环中的 while 这是代码 while gets thefile line gt 0 for set i 1 i lt count table incr i if
  • 计算两个 GPS 坐标之间的罗盘方位时出现问题

    在我的 web 应用程序中 有一个来自数据库查询的 JSON 数据响应 其中包括 1 到 n 个位置的纬度 经度坐标 我想计算轴承data i 位置到当前位置 我一直在调整代码here http www movable type co uk
  • 如何在spray-json中表示可选字段?

    我的请求有一个可选字段 case class SearchRequest url String nextAt Option Date 我的协议是 object SearchRequestJsonProtocol extends Defaul