問題タブ [circe]
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 - Argonaut または Circe を使用して不完全な JSON からケース クラスを更新する
DecodeJson
不完全な json (一部のフィールドが欠落している) が与えられた場合、ケース クラス インスタンス (必要な s が暗黙的に派生したもの) から更新されたインスタンスを作成する必要があります。これは、Argonaut (できれば) または Circe (必要な場合) でどのように達成できますか?
例:
json を json AST に解析し、それを Shapeless に変換してからLabelledGeneric
、何らかの方法で Shapeless update を使用してケース クラス インスタンスを更新する必要があると確信しています。
編集 2
Shapeless ソースを読んだ後、独自の「デフォルト」オブジェクトを生成できることがわかりました。JSONの解析中にケースクラスのインスタンスが存在することを必要とするソリューションを作成することができました。これを回避し、代わりにインスタンスを後で提供することを望んでいました。とにかくここにあります:
これにより が得られPerson(Old Name Kept,42)
ます。
json - Json を circe で変換する
次のjsonペイロードを想定
どのように変換しますか
「B」は利用可能な選択肢からランダムに選択されますか?
これは私がこれまでに得たものです:
これにより、未使用の「必須」フィールドが削除され、空の「値」フィールドが挿入されます。ただし、配列からランダムな値を取得して「値」に配置すると、私は逃げます。
- 編集
上記をより明確にするhcursorを使用してみました(とにかく私にとって)
(上記の例では circe 0.5.1 を使用しています)
json - JSON フィールドの名前を circe に変更する
ケース クラスと JSON で異なる名前のフィールドを使用したいので、エンコードとデコードの両方で快適に名前を変更する方法が必要です。
誰かが良い解決策を持っていますか?
json - json に含まれていない Circe 特性フィールド
私は、いくつかのケースクラスに混在する単純な特性を持っています。そのクラスのインスタンスを circe 経由で JSON に変換するときに、特性のデフォルト値を持つフィールドが JSON 文字列に含まれていないことに気付きました。
io.circe.generic.auto._
エンコードに使用しています
それを説明する例:
与える:{"id":"testId"}
したがってstr
、私が期待するタイムスタンプとバージョンの値が含まれていません
ケースクラスにエンコーダーを使用し、特性をスキップするだけだと思います。それらのフィールドも含めるにはどうすればよいですか?
Circeの異なるバージョン(0.3.0および0.6.0)でこれを試しました
また、後で JSON 文字列からそのフィールド (別の値を持つことができる) をデコードできますか、またはこのフィールドを抽象のままにして、ケース クラスでデフォルトの引数を使用する必要がありますか?
json - Circe を使用して、HList を含むケース クラスを JSON 文字列に解析する
私はScalaで何かをしています。私は次のケースクラスを持っています:
Circeを使用して、このタイプの JSON 表現を取得したいと思います。また、結果の JSON 文字列を型にマップし直したいと思います。
モジュール circe-shapes は、HList の自動派生を行い、HList から JSON へ、およびその逆を簡単に実行できます。次の例を参照してください。
「標準」タイプを含むケース クラスも自明です。
HList の型を明示的に指定すると驚くほどうまくいきますが、HList の目的が少し損なわれます。
Circe は任意の HList をデコードできますか?
json - Circe とモノクル レンズを使用して Json を解析する
私はこのサンプルコードを書きました
しかし、これはイベントコンパイルしません
私も試しました
しかし、これも失敗します
私はかなり驚いています。を実行できるのにisRight
、なぜコンパイラは実行できないと言うのright
ですか?
これが私のbuild.sbtファイルです
scala - Circe 実装によるジェネリック json デコーダー トレイト
プロジェクトのコンポーネントへの依存関係として json デコーダーを挿入するために使用される特性があります。
Circeで実装しようとすると:
そして実行します:
エラーでコンパイルされません:
またはコンテキスト境界を追加しようとしましたがClassTag
、の暗黙的な値をまだ見つけることができません。TypeTag
WeakTypeTag
T
Decoder
Decoder
コンテキスト バインドまたは暗黙のパラメーターを追加することはできませんJsonDecoder.apply
。これを使用するコンポーネントは実装の詳細を認識できないためです。
暗黙的に提供するにはどうすればよいio.circe.Decoder
ですか? からそれを取得する方法があるかもしれTypeTag
ませんか?