問題タブ [serde-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 に答える
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 に答える
177 参照

rust - JSON配列から遅延デシリアライズする方法は?

問題の説明

を使用serde_jsonしてオブジェクトの非常に長い配列を に逆シリアル化すると、Vec<T>配列全体を前もってメモリに読み込む必要があるため、時間がかかる場合があります。代わりに、事前処理とメモリ要件を回避するために、配列内の項目を反復処理したいと思います。

これまでの私のアプローチ

StreamDeserializer連続して配置された自己区切り型に対してのみ反復できるため、直接使用することはできません。だから私がこれまでに行ったことは、実装するカスタム構造体を作成しRead、別の構造体をラップしますReadが、開始と終了の大括弧、およびコンマを省略しています。

たとえば、リーダーは JSON[{"name": "foo"}, {"name": "bar"}, {"name": "baz"}]を に変換して、{"name": "foo"} {"name": "bar"} {"name": "baz"}で使用できるようにしStreamDeserializerます。

コード全体は次のとおりです。

次のように使用されます。

最後に質問です

これを行うにはもっと良い方法があるはずですよね?

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

rust - JSONをBox<[u8]>値を持つ構造に逆シリアル化する方法は?

「バイト」フィールドを含める必要がある構造体があり、JSON から逆シリアル化しようとしています。

を使用する&'a [u8]と、これは機能しますが、この構造体とそれを囲む構造体にライフタイム アノテーションを追加する必要があります。

バイトを「所有」して囲みを使用することで回避できると思いましたBoxが、うまくいきませんでした。なぜそうでないのか、またはこれを機能させる方法 (serde 注釈、このフィールドのカスタムヘルパー、またはその他の方法) があるかどうかを理解しようとしています。

より具体的には、これは機能します:

そして、これはしません:

どちらの場合も、次のように呼んでいます。

(つまり as )Boxに置き換えるときに同じ問題が発生しましたVecVec<u8>

ソリューションで編集:

以下で @lpiepiora が指摘したように、これには追加のラッパーが必要です。serde_bytesクレートによって提供される次のようなもの:

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

rust - Rust:ジェネリック型を持つ構造体のDeserializeを導出する方法は?

上記のコードはコンパイルに失敗し、未使用の有効期間パラメーターを訴えますが、それを削除すると、Deserialize有効期間が失われます。

上記のコードは、ファントム マーカーまたは を使用せずに正しく作成できますかDeserializeOwned?