問題タブ [play-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.

0 投票する
1 に答える
136 参照

json - Scala play-json - 単一引数のケース クラスに解析/デシリアライズしません

Scala では、Travis CI REST API を使用して取得した JSON 応答を解析したいと考えています。そのために、play-json ライブラリを使用することにしました。これに加えて、REST API の「スキーマ」に従って、次のケース クラスを定義しました。

実装自体は一目瞭然ですが、さらに説明が必要な場合は、質問を更新します。

これに伴い、play-json ライブラリに対して次の Reads を定義しました。

コードはコンパイルされ、スキーマ、つまりケース クラスは REST API 応答を確認しますが、応答を検証すると、次のエラーが発生します。

JsError(List((/builds(0)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(0)/pull_request_number,List(ValidationError(List(error. expected.jsstring),WrappedArray()))), (/builds(1)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(1)/pull_request_number, List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(2)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), ( /builds(2)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(3)/pull_request_title,List(ValidationError(List(error.expected.jsstring), WrappedArray()))), (/builds(3)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(4)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(4)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), ( /builds(5)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(5)/pull_request_number,List(ValidationError(List(error.expected.jsstring), WrappedArray()))), (/builds(6)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(7)/pull_request_title,List(ValidationError(List) (error.expected.jsstring),WrappedArray()))), (/builds(7)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(8) /pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(8)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(9)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(9)/pull_request_number,List( ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(10)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/ビルド(10)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(11)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray() )))), (/builds(12)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(12)/pull_request_number,List(ValidationError(リスト(エラー) .expected.jsstring),WrappedArray()))), (/builds(13)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))),(/builds(13)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(14)/pull_request_title,List(ValidationError(List(error.expected.jsstring)) ,WrappedArray()))), (/builds(14)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(15)/pull_request_title,List(ValidationError(リスト(error.expected.jsstring),WrappedArray()))), (/builds(15)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(16) )/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(17)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray())) )), (/builds(18)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(18)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(19)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), ( /builds(19)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(20)/pull_request_title,List(ValidationError(List(error.expected.jsstring), WrappedArray()))), (/builds(20)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(21)/pull_request_number,List(ValidationError(List) (error.expected.jsstring),WrappedArray()))), (/builds(22)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/ビルド(22) /pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(23)/pull_request_title,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(23)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(24)/pull_request_title, List(ValidationError(List(error.expected.jsstring),WrappedArray()))), (/builds(24)/pull_request_number,List(ValidationError(List(error.expected.jsstring),WrappedArray())))))

問題が何であるかについての手がかりはありますか?前もって感謝します!

0 投票する
0 に答える
539 参照

json - play-json scala で未使用のフィールドを持つ json で失敗する方法は?

scala play-json ライブラリを使用して、未使用のフィールドを含む JsonObject を拒否するにはどうすればよいですか? API ユーザーがフィールドのスペルを間違えたり、無視する余分なフィールドを指定したりしたときに、エラーを発生させたいと考えています。Java 版ではの言及がDeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES見られますが、scala 版では見られません。

これが私の希望する単体テストです:

そしてこのbuild.sbt

0 投票する
1 に答える
549 参照

scala - play-json - パラメータ um の暗黙的な値が見つかりませんでした

この質問は以前に何度も尋ねられたことを知っていますが、それらはすべてスプレー json を使用しています。play-json を使いたかったのです。これが、提案されたソリューションが問題を解決しない理由かもしれません。を持つ特性は、RestApi.scalarouteという名前の別のファイルにあります。それを利用するのはMain.scalaという名前のファイルにあります。無関係な要素が削除されていない両方のファイルを以下に示します。ファイル全体を見たい場合は、上記のリンクをクリックしてください。Http.bindAndHandle

RestApi.scala

Main.scala

RestApi.scala エラー メッセージでエラーが発生する行を指摘します。

これは、 Contact.scalaContactで定義されたデータ モデルです。

これが重複していないことを願っていますが、そうは思いません。どんな助けでも大歓迎です。

0 投票する
2 に答える
125 参照

scala - Play アクション コンポジション - パラメータ化されたパーサーのハードコーディング

次のようなアクションを書く定型文を取り除くカスタム アクションを作成したいと思います。

ただし、クラス定義エラーが発生し続けます。これが私の最も成功した試みです:

しかし、次のエラーが表示されます。method composeAction overrides nothing.

変更composeAction[A: Reads]するcomposeAction[A]と、タイプ A の Json シリアライザーがないことがわかります。

このカスタム アクションを定義する他の方法はありますか?

0 投票する
2 に答える
668 参照

json - オブジェクト名と値の Play フレームワーク JsReads

次の JSON を検討してください。

readsJSON を使用してこの JSON を Scala ケース クラスに変換する方法はありますか? つまり aSeq[Years]または aMap[String, String]で、 Year には年と説明が含まれます。

参考までreadに、「単純な」JSON 構造を定義する方法を次に示します。

暗黙のJsReads

0 投票する
1 に答える
220 参照

play-json - ケースクラスを回避する Play JSON を使用して JsArray を反復処理するにはどうすればよいですか?

これが私のユース ケースです。JSON ドキュメント内の配列にアクセスし、JSON の海岸から海岸への変換を各オブジェクトに適用して、変換されたオブジェクトのコレクションを取得するために、それを反復処理する必要があります。

私は次のようなアプローチを考えていました:

ただしresultsJsLookupResult型であり、.map()メソッドはありません。

私は何をする必要がありますか?

0 投票する
1 に答える
663 参照

scala - play-json が Option[T] のタイプの空の文字列を None として読み取るようにする

play-json を使用して GitHub API から json を解析しようとしていますが、merge_commit_shaプル リクエストのフィールドで問題が発生しました (ちなみに、このフィールドが非推奨であることは知っていますが、この解析の問題でそれについて議論したくありません!) . 残念ながらmerge_commit_sha、場合によってはフィールドが空の文字列として返されます。

これは、フィールドが私のケースクラスで宣言される方法です:

Git ハッシュ ID の有効な値ではないため、空の文字列を許容しない暗黙的Format[ObjectId]ながあります。Read[PullRequest]また、プル リクエストですべてのフィールドの読み取りを個別に宣言するのではなく、引き続き使用したいplay-json マクロで生成された も使用しています。

"merge_commit_sha": ""フィールドが Option であると宣言したので、 value として読み取られるようにしたいのですNoneが、これは現在起こっていることではありません。文字列が存在するため、Format[ObjectId]が呼び出され、 が返されますJsFailure

私が試したことの 1 つはFormat[Option[ObjectId]]、必要な動作で暗黙的を宣言することでしたが、マクロで生成されたRead[PullRequest].