問題タブ [spray-json]
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 - スプレー json を使用して、「asJson」メソッドをケース クラスの一部にするにはどうすればよいですか?
Spray-json を使用して Scala でケース クラスを作成できるようにしたいのですがasJson
、 class でメソッドを定義しますが、方法がわかりません。たとえば、私はこれを行うことができるようにしたいと思います:
暗黙的な JSON コンバーターを作成するのは簡単です。
しかし、私の知る限り、これはクラスの外でのみ行うことができます。JSON 形式を宣言し、クラス内で JSON に変換する方法を見つけたいと思っています。
scala - Scala は名前を付けずに値を暗黙のスコープに持ち込む
Spray-jsonを使用する場合、シリアル化JsonFormat[A]
するすべてのドメイン タイプの暗黙的なスコープにを持ち込む必要があります。A
推奨されるアプローチは、フィールドとしてすべての Implicit を持つカスタム オブジェクトを作成することです。
私のアプリには非常に多くのドメイン タイプがあり、そのうちのいくつかは長い名前を持っています。私のMyJsonProtocol
は長くなって読めなくなっています:
long val 名にはさまざまな問題があります。
- 彼らは冗長だと感じます(名前は決して読まれません)
- 彼らは私のセリフをとても長くします
- 形式の名前が形式のタイプと一致しないというコピー/貼り付けのリスクが発生します
- これらは RHS 値を整列させないため、ここに共通のパターンが隠されています。
名前を付けずにオブジェクトを暗黙のスコープに入れる方法はありますか? このようなものは、はるかにきれいになります:
...しかし、Scala は「_」という名前の複数のフィールドを許可しません。
それらすべてに名前を付けずに、これらの形式を暗黙のスコープに入れる方法はありますか? この問題を回避する別の方法で、spray-json を使用することはできますか?
scala - 暗黙的な FromRequestUnmarsharell が見つかりません
ドメイン オブジェクトをリクエスト/レスポンス ボディ パラメータとして使用しようとしています。スプレールーティングを使用しas[T]
て、オブジェクトを非整列化しています。しかし、常に私は得てcould not find implicit value for parameter um: spray.httpx.unmarshalling.FromRequestUnmarshaller
います。暗黙のアンマーシャラーを手動でコンパニオン オブジェクトに追加しましたが、同じエラーが発生します。何が悪いのかわかりません。joda DateTime オブジェクトをシリアル化する必要があるため、この Event 用の JSON シリアライザー/デシリアライザーを作成しました。
json - Spray.io は json ディレクティブを検証します
Spray.IO を使用して、JSON 入力を受け取るサービスを構築しています。フィールドのいくつかをチェックして、JSON ペイロードを検証したいと考えています。
JSON スキーマの検証やエラーの解析には興味がありませんが、代わりにフィールドの実際の型のようにフィールド値をチェックします (つまり、整数と浮動小数点数)。
Scala require を使用すると例外が発生し、単一のリクエストで見つかったすべての検証エラーをクライアントに通知できないため、私は Scalaのrequireの使用には興味がありません。
これに対する組み込みのディレクティブ/拒否はありますか?
Play ( http://www.playframework.com/documentation/2.2.1/ScalaJsonRequests ) で似たようなものを見たことがありますが、何も組み込まれていない場合、自分で何かを構築するにはどうすればよいでしょうか?
scala - スプレーで Scala ケース クラスを使用して、Ember データの名前付きルートで JSON を (アン) マーシャリングします。
私は RESTful インターフェイスを作成しています。JSON をマーシャリングおよびアンマーシャリングして Ember Data に対応させたいと考えています。問題は、Ember Data がエンティティ名を必要としており、私が試した 2 つのライブラリ、spray-json と json4s は、これを簡単に実行できないように見えることです。
必要なEmber データ形式
現在のデフォルト形式:
これは、ケース クラスから取得する必要があります。
次のカスタムコードで実行しました:
そのコードは恐ろしく壊れやすく、醜いように見えasInstanceOf
ます(0)
。
私がScalaでSprayで書いていることを考えると、名前付きルートのJSON出力を取得する良い方法は何ですか? 私は、Spray と適切に統合され、適度にパフォーマンスの高い JSON ライブラリでこれを行うことができて非常に満足しています。
json - json マーシャリングをスプレーする
私は、いくつかのモデルを適切に一般化できる JSON API を作成しようとしています。私はスプレーの初心者なので、非常に単純化された例でスパイクを開始しました。
ただし、次のコードで何が起こっているのかわかりません...
両方輸入しました
- 私のカスタム暗黙と
- Spray.httpx.SprayJsonSupport._
私が理解しているように、これは JsonFormat から Marshaller に変換できる暗黙のスコープを持つために私がしなければならないことです。
コンパイラ エラー:
TestService.scala:15: パラメータ um の暗黙的な値が見つかりませんでした: Spray.httpx.unmarshalling.FromRequestUnmarshaller[my.company.Test[my.company.X]]
コード:
助けていただければ幸いです。前もって感謝します。
解決した
解決策は(@jrudolpが示唆したように)次の両方でした:
- 暗黙の定義をファイルの上に移動します (驚くべきこと)
- JsonFormat ではなく RootJsonFormat を作成します。
scala - Spray-json JsNumber BigDecimal isValid* 奇妙さ
誰かが私にこれを説明できますか:
私は、Scala 2.10.3 で、spray-json 1.2.6 を使用しています。これらは私の libraryDependencies です。
"io.spray" %% "spray-json" % "1.2.6"
ありがとう、グレガ
scala - スプレー クライアント - 予期しないコンテンツ タイプの応答をアプリケーション/json として扱いますか?
そのようなAmazon IDデータを取得しようとすると
適切なケース クラスとフォーマッタを使用すると、次の例外が発生します。
UnsupportedContentType ('application/json' が必要です)
Amazon がレスポンスをtext/plainコンテンツ タイプとしてマークするためです。また、 Acceptヘッダー パラメータも気にしません。アンマーシャリング時にこれを無視するようにspray-jsonに指示する簡単な方法はありますか?