問題タブ [serde]
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.
rust - すべてではなく特定の入力タイプに対して Deserialize 実装をカスタマイズするにはどうすればよいですか?
私の実際の型はより大きく、より複雑ですが、私はこのような型を持っています:
この型を実装Deserialize
すると、serde は次のようなものを探します (JSON に興味があります)。
バイト配列からも逆シリアル化できるようにカスタマイズしたいと思います。
配列を処理する impl を作成できますが、serde で残りを自動生成する必要があります (これは になりますvisit_map
)。
それは可能ですか?この例では難しくありませんが、構造体が大きい場合、手書きのデシリアライズは面倒です。
これは、Serde を使用して逆シリアル化中にフィールドを変換する方法の複製ではありませんか? deserialize_with
1つのフィールドでのみ機能するためです。私の本当のタイプでそれをどのように機能させるか理解できません:
私がやりたいことは次のとおりです。
- 逆シリアル化中に、入力が数値の場合は を返します
Component::String
。visit_i
これは/u
/f64
と友達と一緒に行うことができます。 - 入力が文字列の場合は、
Component::String
再び a を返します。visit_str
これは/で実行できますstring
。 - input が array の場合
[..]
、通常どおりデシリアライズしますが、array[1..] の要素を array[0] の extra に割り当てます。これは によって行うことができますvisit_seq
。 - 入力がマップの場合は、serde 派生に処理させます。
generics - Serde でシリアル化でき、型情報を保持できる汎用構造体を作成するにはどうすればよいですか?
一般的なデータ構造をシリアル化するために Serde を使用したいと考えています。
Serialize
私のライブラリのユーザーは、とを実装する独自の構造を提供できるはずDeserialize
です。データをシリアル化した値の元の型情報を取得できるはずです。
どうすればこれを行うことができますか?
私はこのようなことを試しました:
V
データを逆シリアル化した後、型を戻したいです。
これはそれを行う方法ですか、それとも軌道から外れていますか?
ユーザーが可能な値/型を拡張できるようにしたい。列挙型の動作が必要ですが、ユーザーが独自の構造体を可能な候補として追加できる柔軟性が必要です。このコードに似ていますが、すべて一意のIDが必要です。