Ich habe einen Controller eine Route wie 'POST/doit', der json Körper automatisch in eine Fallklasse in Tools (Jackson, etc.), mit Finatra so etwas wie diese gebaut wird analysiert Handhabung:Wie kann ich festlegen, dass ein Feld so leer bleibt, während Finatra eine Anfrage in eine Fallklasse analysiert?
class MyController extends Controller {
post("/doit") { request: MyRequest =>
// something
}
}
case class MyRequest(
id: String,
custom: String
)
Hier sind einige gültige Anfragen:
{ "id": "my id", "custom": "my custom" }
{ "id": "my id", "custom": "{'x': 'y'}" }
Wie Sie sehen können, ‚custom‘ Feld ein JSON sein kann, die nicht deserialisiert werden kann, weil Jackson es erwarten ein POJO anstelle eines String zu sein, habe ich versucht, diese JSON mit Zitaten Einwickeln aber sie werden ignoriert und das Feld wird als JSON behandelt.
Wie kann ich Jackson Bibliothek wissen, dass dieses Feld klar gehalten werden soll?
Ich hatte gelesen und die beste Lösung, die ich kam, ist eine benutzerdefinierte Deserializer schreiben, in diesem Fall habe ich keine Ahnung, wie man mit Finatra integrieren.