Scala 如何根据值的运行时类型查找spray json格式化程序?
使用spray json的传统方法似乎是在编译时将所有模型绑定到适当的Scala 如何根据值的运行时类型查找spray json格式化程序?,scala,spray-json,Scala,Spray Json,使用spray json的传统方法似乎是在编译时将所有模型绑定到适当的JsonFormats(内置或自定义),所有格式都是隐式的。有没有办法在运行时查找格式化程序?我试图封送一个异类值列表,我看到的唯一方法是 编写一个明确的查找(例如,使用模式匹配),硬编码哪个fomratter用于哪个值类型,或 使用反射来发现所有隐含的东西是疯狂的 我对Scala和spray json都是新手,所以我担心我缺少了一些更简单的方法 更多上下文:我正在尝试编写一个自定义序列化程序,它只写出(惰性)对象字段的指定
JsonFormats
(内置或自定义),所有格式都是隐式的。有没有办法在运行时查找格式化程序?我试图封送一个异类值列表,我看到的唯一方法是
更多上下文:我正在尝试编写一个自定义序列化程序,它只写出(惰性)对象字段的指定子集。我在运行时循环遍历指定字段(字段名)的列表,并通过反射获取值(实际上比这更复杂,但足够接近),现在对于每个字段,我需要找到一个可以序列化它的
JsonFormat
。异构列表元素是否扩展了一个公共超类?一些代码可能会有帮助。不,它可以是从Int到Option[SomeClassOfMine]的任何代码。基本上,我想要的是(x:Any)=>JsonWriter[\u]
,其中返回的JsonWriter
保证能够处理x的运行时类型,如果(隐式)范围中存在这样的JsonWriter
。