gpt4 book ai didi

json - 斯卡拉/Play : JSON serialization issue

转载 作者:行者123 更新时间:2023-12-01 04:54:58 27 4
gpt4 key购买 nike

我有一个简单的自定义数据结构,用于映射数据库中的结果:

case class Filter(id: Int, table: String, name: String, Type: String, structure: String)

生成的对象类型是 List[Filter],如果转换为 JSON,它应该看起来像这样:

[
{
"id": 1,
"table": "table1",
"name": "name1",
"Type": "type1",
"structure": "structure1"
},
{
"id": 2,
"table": "table2",
"name": "name2",
"Type": "type2",
"structure": "structure2"
}
]

现在当我尝试将我的对象序列化为 JSON

val result: String = Json.toJson(filters)

我得到了类似的东西

No Json deserializer found for type List[Filter]. Try to implement an implicit Writes or Format for this type.

如何在不编写大量可笑的样板文件的情况下解决这个看似简单的问题?

我的堆栈是 Play 2.2.1、Scala 2.10.3、Java 8 64 位

最佳答案

简答:

只需添加:

implicit val filterWrites = Json.writes[Filter]

更长的答案:

如果你查看 Json.toJson 的定义,你会发现它的完整签名是:

def toJson[T](o: T)(implicit tjs: Writes[T]): JsValue = tjs.writes(o)

Writes[T] 知道如何获取 T 并将其转换为 JsValue。你需要有一个隐式的 Writes[Filter] 来知道如何序列化你的 Filter 实例。好消息是 Play 的 JSON 库带有一个宏,可以为您实例化那些 Writes[_],因此您不必编写将案例类的字段转换为 JSON 值的无聊代码。要调用此宏并通过隐式搜索获取其值,请将上面的行添加到您的范围。

关于json - 斯卡拉/Play : JSON serialization issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19914556/

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