我有一个控制器处理像'POST / doit'这样的路由,使用Finatra内置工具(Jackson等)将json主体自动解析为案例类,如下所示:
class MyController extends Controller {
post("/doit") { request: MyRequest =>
// something
}
}
case class MyRequest(
id: String,
custom: String
)
以下是一些有效的请求:
{ "id": "my id", "custom": "my custom" }
{ "id": "my id", "custom": "{'x': 'y'}" }
如您所见,“自定义”字段可以是无法反序列化的 JSON,因为杰克逊希望它是 POJO 而不是字符串,我尝试用引号将这个 JSON 包装起来,但它们被忽略了,并且该字段被处理为 JSON .
我怎样才能让杰克逊图书馆知道这个字段应该保持简单?
我已经阅读并且我想出的最佳解决方案是编写自定义反序列化器,在这种情况下,我不知道如何与 Finatra 集成。