問題タブ [bincode]
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.
serialization - 不明な JSON をバイナリにシリアライズおよびデシリアライズする
json オブジェクトを入力として受け取るマイクロサービスを作成しています。この json オブジェクトは部分的にしか知られていないため、マップ先の構造体は次のようになります。
次に、これを RabbitMQ キューに公開したいので、次を使用してシリアル化しbincode
ます。
受信側のサービス (コンシューマー) は、(まったく同じモデルを持っていても) これを逆シリアル化できず、結果はErr(DeserializeAnyNotSupported)
.
私の理解から、これserde_json::Value
は構造体の - 部分から来ました。受信側のサービスで逆シリアル化するために、部分的に不明な JSON オブジェクトをバイナリにシリアル化するにはどうすればよいでしょうか?
rust - serde が人間が読めるシリアライザーの 16 進文字列のみを生成するようにしますか?
現在serde-hexを使用しています。
次のエラーで失敗します:
ビンコードの 16 進文字列に値が展開されているためです。
serde_json と bincode の両方でシリアル化する必要がある多くの構造体があります。 serde_hex
JSONシリアライゼーションに必要なことを正確に行います。bincode serde-hex を使用すると、配列が 16 進文字列に変換されますが、これは望ましくありません。
secp256k1 が を使用しd.is_human_readable()
ていることに気付きました。
serde_hex
のみに適用しserde_json
て無視するにはどうすればよいbincode
ですか?
rust - Serde bincode カスタム デシリアライゼーション スキーム
クレートを使用serde
して特定の構造体の高度なシリアライゼーション/デシリアライゼーション スキームを実装しようとしています。bincode
実証するために、次のコードが機能します。
出力:
ただし、データをより圧縮された形式でシリアル化したいと考えています。データに含まれるバリアントを識別する明示的なタグはありません。代わりに、これを対応するバイトから派生させたいと考えています。バイトが 100 未満の場合は Element Vec<u8>
、それ以外の場合は Commandu8
です。私はそのように設定しようとし#[serde(untagged)]
ましたCommand
次の出力が得られます。
最初の印刷は正しいですが、上記で説明した逆シリアル化を実装する方法がわかりません。