問題タブ [argonaut]
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.
scala - Play フレームワークの http 応答用に Writeable[Argonaut.Json] を作成する
私はこの関数の実装をplays jsonライブラリの使用から変更しようとしています
そのようにアルゴノートを使用するには
しかし、私は得る
Argonaut.Json のインスタンスを HTTP 応答に書き込めません。Writeable[argonaut.Json] を定義してみてください
Status{} ブロックと Ok{} ブロックの両方について、この問題に対する有益な回答がhttps://groups.google.com/forum/#!topic/play-framework/vBMf72a10Zcにありました。
だから私はそのように暗黙的な変換を作成しようとしました
これはjsonオブジェクトを文字列に変換し、それをcodec.encodeに提供してArray [Bytes]に変換すると思いますが、
アルゴナウト.Json に使用するコンテンツ タイプを推測できません。ContentTypeOf[argonaut.Json] を定義してみてください
jsval.nospaces.getBytes も Array[Bytes] を返すため、それがまったく役立つかどうかはわかりません
したがって、最後のエラー メッセージは、コンテンツ タイプ application.json を使用する必要があることをプレイに伝える必要があることを意味していると思いますが、これは不必要なウサギの穴である可能性があり、これを行うためのより簡単な方法があるはずです。
編集: contentType を定義することで、少なくともコンパイルが行われるようなうさぎの穴ではありませんでしたが、これが正しいかどうかはまだ知りたいです
scala - Argonaut を使用して json を scala で List[A] にデコードする
私はタイプ Wf を持っています
アルゴナウトデコーダーを定義する次の暗黙的な関数があります
ここに私がデコードしようとしているjsonがあります
私が行った場合
期待どおりの結果が得られました(Wf)
私が行った場合
私はニルを得ます。暗黙のデコーダーにブレークポイントを追加すると、Wf を要求するだけで for 理解に入ります。リスト[Wf]を要求しても、理解のために入力することさえないようです
私が行った場合
私は得る
私は何を間違っていますか?
json - 非再帰ケースクラス用の単純な Scala JSON ライブラリ
文字列または文字列のコレクションのみを含むケース クラスがあり、それらを対応するフィールド名と型を示す追加フィールドを持つ JSON オブジェクトに変換したいと考えています。
ほとんどのライブラリはケースクラスを特別にサポートしていますが、それを追加のタイプフィールドと組み合わせて使用して同形のケースを明確にする方法はないようで、より低レベルの説明にフォールバックする必要があります。
これまでのところ、スプレー json とアルゴノートを試してみましたが、単純な使用シナリオが正当化するよりもはるかに多くのボイラープレートができてしまいました。
アルゴナウトの場合DecodeResult
、フィルターメソッドがないため、タイプフィールドを一致させる方法さえわかりませんでした:
これをより適切に処理できる別のライブラリはありますか、それとも私が見落としていたこれらのライブラリのいずれかにボイラープレートを大幅に削減する機能がありますか?
json - トレイト型パラメーターの暗黙のエンコーダー
List[E]
Arnaut libを使用してタイプのフィールドをjsonにエンコードしたいと思います。
次に、StringMsg
ケースクラスがあります:
アルゴナウト lib はJsonIdentity[J]
特性を定義します:
の新しいインスタンスを作成しStringMsg
てメソッドを呼び出すとsend()
、次のエラーが発生します。
パラメーター e の暗黙的な値が見つかりませんでした: argonaut.EncodeJson[List[E]]
json - Argonaut による Scalaz 検証
ケース クラスとコンパニオン オブジェクトがあります。
Argonaut を使用して、いくつかの JSON を解析し、Person またはいくつかのエラーをリストとして返したいと考えています。だから私はする必要があります:
- 文字列から JSON を読み取り、文字列が正しい形式であることを検証します
- JSON を Person またはエラー文字列の List にデコードします。
次のような JSON に変換できる形式でエラーを返したいと思います。
最初に、Validation[String, X] を返す Argonauts の decodeValidation メソッドを使用してみました。残念ながら、エラーのリストが必要です。
助言がありますか?
scala - Scala - 共通の TypeClass を実装する個別の型を同じものとして扱う
case class User
2 つのケース クラスがあります。それらを&と呼びましょうcase class Ticket
。これらのケース クラスは両方とも、同じTypeClass
、この場合は Argonaut の のメンバーであるために必要な操作を実装しEncodeJson
ます。
両方が拡張する空のマーカー タイプを作成せずに、これら 2 つの別々のタイプを同じものとして表示することは可能ですか?
これを具体的にするために、これらのケース クラスを返す 2 つの別個の関数があります。
これら 2 つのサービスが同じ型 (この場合は ) を返すように構成したいと思いますargonaut.Json
が、暗黙的な変換に対するコンパイラの応答は "LOLNO" です。
何か案は?ありがとう!
scala - scala ライブラリを設計するときにリフレクションを避ける必要がありますか?
たとえば、私argonaut
たちのプロジェクトのいくつかでは、JSON を処理する必要がある場合、人々はそのためにアルゴナウトを使用し、次のようにフィールドをハードコーディングします。
大きなケース クラスがある場合、リストは非常に長くなります。
私の質問は、リフレクションによってフィールドを取得するのではなく、なぜそれらをハードコーディングする必要があるのですか?
技術的な問題はありますか? それとも、Scala ライブラリを設計するときにリフレクションを使用するのが嫌いなだけですか?