問題タブ [json4s]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - Salat と Scala を使用して組み込み MongoDB 配列のケース クラスを作成する
Scala プロジェクトで MongoDB からドキュメントを適切にシリアル化する方法を見つけようとしています。ここで私が抱えている問題は、ドキュメントに Array フィールドがある場合に何をすべきか、Scala でそれをどのように扱うべきかがわからないことです。MongoDB でのドキュメントの外観は次のとおりです。
ここで、ケース クラスを作成して、このドキュメントのカスタム シリアライザーを作成し、それをクライアントに配信できるようにする必要があります。次のようなケースクラスの構築を開始しました。
コンテキストに応じて他のコレクションではプレーヤー ハッシュが異なって見えるため、必ずしもプレーヤー ケース クラスを作成する必要はありません。「スケジュール」コレクションなどのプレーヤーの配列があるかもしれませんが、そこに負傷データをリストするつもりはありません。これはプレーヤー コレクションへの実際の参照ではなく、フィールドの名前が「players」であるハッシュを含む単なるリストです。理想的には、このチームの ID が要求されたときにこれを単純に出力するシリアル化を作成する方法を理解できます。
その最終的な JSON ドキュメントを取得できるようにするには、他に何をしなければなりませんか? Salat がケース クラスへのシリアル化を処理できることは知っていますが、ここでの player 属性の処理方法がわかりません。これが私が取り組み始めたシリアライザーの始まりですが、プレイヤーマップをここに合わせる方法はまだわかりません:
そして、すべてのドキュメントを取得するための単純なヘルパーがあります。
これは問題なく動作しますが、上記のようにプレイヤー マップは含まれません。
json - Json4s を使用して、JSON タプルのリストをケース クラス フィールドとして表現する
次の JSON が与えられます。
それを Scala ケース クラスとして表現する最良の方法は何ですか? 論理的には、次のようになるはずです。
ただし、これを Json4s と Jackson で解析しようとすると、次のようになります。
逆に、予想を構築するとFoo
...
...そしてそれをJSONとして書くと、タプルのリストを取得できません。次のようになります:
この回答では、Json4sが DSLからオブジェクトを生成すると主張Tuple2s
しているにもかかわらず、オブジェクト フィールドがJValue
. Foo
モデルオブジェクトをシリアライズおよびデシリアライズする以外に他のことをしたいので、 JValues
.
それを考えると、私はここで何をすべきですか?
scala - 値なしのキーを削除するjson4s
docsで説明されている暗黙的な変換を使用して、Scalatra アプリケーションから JSON を返すように取り組んできました。
空のオプション (つまり、None) を持つキーが結果の JSON から取り除かれていることに気付きました (予想される動作のように見える null ではなく)。
None
次のように、暗黙的な変換を使用して にキャストしようとしましたnull
。
ただし、カスタムシリアライザーの実行前にキーが取り除かれているようです。
誰かがこれに対する解決策を見つけましたか?
この質問で説明されているソリューションは、説明されている配列のケースでは機能しますが、マップでは機能しないようです。
更新: これは私が使用しているテストです:
そして私が探している出力は
私も使っています
protected override def transformResponseBody(body: JValue): JValue = { body.underscoreKeys }
下線付きキーの場合
json - Json4s とカスタム シリアライザーを使用して JSON をポリモーフィックに読み取る
次のクラス階層があります。
次のシリアライザーを定義しました。
Json4s ではマップ キーが文字列でなければならないという事実を回避するために、カスタム シリアライザーを作成する必要がありました。
カレンダーのデータを含む可能性のあるファイルがありますが、それがどのタイプのカレンダーであるかを事前に知りません。
次のことを試すと:
私は得る:
したがって、Json4s は私のシリアライザーを見つけることができないようです。
それで...ヒントはありますか?Json4s を文字列以外のキーでマップをシリアル化/逆シリアル化する方法、またはこれを機能させる方法については?
ありがとう!
scala - スプレー json4s サポートを使用して json データをスネーク ケースとしてマーシャリングする方法
Scala ケース クラス フィールドはキャメルケース化され、
しかし、私はスネークケースでjsonを生成したい.
とにかくこれを行うことはありますか?
Json4sSupport トレイトにはこれを行う方法がないようです