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

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

serialization - 不明な JSON をバイナリにシリアライズおよびデシリアライズする

json オブジェクトを入力として受け取るマイクロサービスを作成しています。この json オブジェクトは部分的にしか知られていないため、マップ先の構造体は次のようになります。

次に、これを RabbitMQ キューに公開したいので、次を使用してシリアル化しbincodeます。

受信側のサービス (コンシューマー) は、(まったく同じモデルを持っていても) これを逆シリアル化できず、結果はErr(DeserializeAnyNotSupported).

私の理解から、これserde_json::Valueは構造体の - 部分から来ました。受信側のサービスで逆シリアル化するために、部分的に不明な JSON オブジェクトをバイナリにシリアル化するにはどうすればよいでしょうか?

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

rust - serde が人間が読めるシリアライザーの 16 進文字列のみを生成するようにしますか?

現在serde-hexを使用しています。

次のエラーで失敗します:

ビンコードの 16 進文字列に値が展開されているためです。

serde_json と bincode の両方でシリアル化する必要がある多くの構造体があります。 serde_hexJSONシリアライゼーションに必要なことを正確に行います。bincode serde-hex を使用すると、配列が 16 進文字列に変換されますが、これは望ましくありません。

secp256k1 が を使用しd.is_human_readable()ていることに気付きました。

serde_hexのみに適用しserde_jsonて無視するにはどうすればよいbincodeですか?

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

rust - Serde bincode カスタム デシリアライゼーション スキーム

クレートを使用serdeして特定の構造体の高度なシリアライゼーション/デシリアライゼーション スキームを実装しようとしています。bincode実証するために、次のコードが機能します。

出力:

ただし、データをより圧縮された形式でシリアル化したいと考えています。データに含まれるバリアントを識別する明示的なタグはありません。代わりに、これを対応するバイトから派生させたいと考えています。バイトが 100 未満の場合は Element Vec<u8>、それ以外の場合は Commandu8です。私はそのように設定しようとし#[serde(untagged)]ましたCommand

次の出力が得られます。

最初の印刷は正しいですが、上記で説明した逆シリアル化を実装する方法がわかりません。