は、私は「POST /のdoIt」のようなルートを扱うコントローラを持って、JSON本体は自動的にツールに組み込まれFinatra(ジャクソン、など)、このようなものを使用した場合のクラスに解析されいくつかの有効な要求:はどうすればFinatraはケースクラスに要求を解析している間、プレーンとして保持されるようにフィールドを設定することができますか?</p> <pre><code>class MyController extends Controller { post("/doit") { request: MyRequest => // something } } case class MyRequest( id: String, custom: String ) </code></pre> ここ<p>です:
{ "id": "my id", "custom": "my custom" }
{ "id": "my id", "custom": "{'x': 'y'}" }
あなたが見ることができるように、「カスタム」フィールドには、ジャクソンが、それはPOJOの代わりに、文字列であることを期待しているため、デシリアライズすることはできませんJSONすることができ、私は引用符で、このJSONをラップしようとしましたしかし、それらは無視され、フィールドがJSONとして扱われます。
は、どのように私は、このフィールドはプレーン保たれるべきであることを知ることがジャクソンライブラリさせることができますか?
私が読んでいたし、私が思いついた最善の解決策は、カスタムデシリアライザを書くことで、この場合には、私がどのようにFinatraと統合していないアイデアを持っています。