gpt4 book ai didi

scala - 如何创建一个只接受可以使用 spray-json 转换为 Json 的类型的函数

转载 作者:行者123 更新时间:2023-12-02 08:31:38 26 4
gpt4 key购买 nike

我有一个函数,它将接受某种类型的参数,将该参数转换为 Json,然后返回它。这里的问题是我的函数无法在参数上调用 .toJson,因为它不知道它。

例子:

def convertToJson[A](toConvert: A): JsValue = 
toConvert.toJson

这显然行不通,但我想知道如何才能做出与此类似的作品?我如何概括此函数以与我所有的可序列化案例类一起使用?没有我可以添加的统一类型允许此函数接受所有可序列化的案例类。

如果需要更多信息或需要更好的解释,请告诉我。

最佳答案

toJson 方法由隐式扩展 PimpedAny 提供,您必须导入它:

import spray.json._

def convertToJson // ...

然后,spray-json 使用 spray.json.JsonWriter[A] 类型类来确定可以序列化的内容。您必须提供证据,证明您的 A 可以被视为 JsonWriter[A]。有两种方法可以做到这一点:

def convertToJson[A: JsonWriter](toConvert: A): JsValue = 
toConvert.toJson

def convertToJson[A](toConvert: A)(implicit writer: JsonWriter[A]): JsValue = 
toConvert.toJson

前者是后者的语法糖。

更新:

也可以跳过toJson扩展,直接使用JsonWriter:

def convertToJson[A](toConvert: A)(implicit writer: JsonWriter[A]): JsValue = 
writer.write(toConvert)

toJson 正在做什么。

关于scala - 如何创建一个只接受可以使用 spray-json 转换为 Json 的类型的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26166856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com