問題タブ [protostuff]

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 に答える
1390 参照

java - 循環参照と組み合わせてジェネリックを使用すると、プロトスタッフがオブジェクトを破損するのはなぜですか?

循環参照とジェネリックスを含むprotostuffバイナリを使用しています。非常に単純なシナリオとして、次のクラスがあります。

////////////////////////////////////////////////// /////////////////////////////

////////////////////////////////////////////////// /////////////////////////////

次の単体テストを実行して、ラウンドトリップのシリアル化/逆シリアル化が正しく実行されたことを確認すると、非常に奇妙な結果が得られます。最後のアサーションは失敗します:

Protostuffは、子クラスから親に戻る循環参照を破損しています。最後のアサーションは合格するはずですが、何らかの理由でクラスはコンテナタイプです。

私は何が間違っているのですか?

強く型付けされたオブジェクトを使用するようにContainerクラスを変更すると、単体テストに合格します。これはバグですか?

私が使用しているMavenアーティファクトは次のとおりです。

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

java - ProtobufとProtostuff間の互換性

Protostuffコードジェネレーターによって生成されたクラスは、Protobufによって作成されたクラスと互換性がありますか?

いくつかの単純なメッセージを(逆)シリアル化しようとしましたが、いくつかの例外がありました。

プロトファイル(WrapperClass.proto)

ProtostuffからProtobufテスト(例)

問題:

すべてがProjectIdで機能しますが、UserIdとChannelId(すべてがもう少し複雑です)では、次のようになります。

そしてその逆:

ProtobufからProtostuffへのテスト(例)

問題

繰り返しますが、ProjectId以外のすべてについては、例外があります。

私は不可能なことを試みていますか、それとも何か間違ったことをしているだけですか?

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

protostuff - プロトスタッフを使用して、削除されたエンティティの読み取りをスキップする方法は?

私は Protostuff を使用してデータの読み取り/書き込みを行うチームの一員です。これは、mergeFromクラスから拡張されたクラスのメソッドですSchema

私の現在のタスクは、そのデータのスキーマが既に削除されているデータの読み取りをスキップすることです。インターフェイスのhandleUnknownFieldメソッドを見ていInputます。

これをすでに経験した人はいますか?

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

java - Protostuff を使用して Guava の不変コレクションをどのようにシリアル化しますか?

私は protostuff-runtime を使用してオブジェクト グラフをシリアル化します。これらのオブジェクトの一部は、ImmutableList や ImmutableSet などの Guava 不変コレクションへの参照を持っています。Protostuff は、インスタンスを構築し、inputStream からそれに要素を「追加」しようとするため (コレクションは不変であるため、失敗します)、そのままではこれらのコレクションをデシリアライズできません。

すぐに使えるライブラリ/プロトスタッフプラグインを知っていますか? そうでない場合、これを自分で行うベストプラクティスはありますか?

私が調査したところ、プロトスタッフには「デリゲート」の概念があり、特定の型のシリアル化を制御できることがわかりました。それは私の問題に対する答えのようですが、うまくいかないようです。

これが私が今持っているものです:



テストは次の例外で失敗します。これは、デリゲートが null 値のみを逆シリアル化していることを意味しているようです。

これは正しいアプローチですか?私は何が欠けていますか?

これは、Null ポインター例外とは何ですか? どうすれば修正できますか?の複製ではありません。意味のない質問です。Protostuff デリゲートを使用して不変コレクションを逆シリアル化しようとすると NPE がスローされると述べたという事実は、これが「NPE とは何か」と重複するという意味ではありません。あらゆる方法、形、または形式で質問します。

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

java - piqi 定義を使用して Java を介して C++ から JSON データを読み取るにはどうすればよいですか?

piqi スキーマを使用して json API を定義するサードパーティの REST Web サービスを使用します。現在のアーキテクチャでは、このデータを Java クライアントを介して読み取り、c++ バイナリに転送する必要があります。理想的には、すべての POJO と c++ 構造体、およびデータ変換 (json->java、java->c++) ロジックを生成したいと考えています。protobuf、protostuff、thrift のさまざまな組み合わせを調査してきましたが、フローにはまだギャップがあります。誰にも提案がありますか?

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

java - Android で Protostuff のシリアライズされたバイトコードを PC でデシリアライズできない

PC でシリアル化されたモデルを逆シリアル化しようとすると、下部に奇妙なエラーが表示されます。PC で同じモデルをシリアル化し、PC で逆シリアル化する場合と同様に、逆シリアル化は Android でも機能します。したがって、これは相互運用性の問題のようです。

同じ方法でシリアル化するにはどうすればよいですか?

シリアル化する必要がある私のモデルには、次の POJOS とコレクションがあります。

Android と Windows PC ではマップのシリアル化が異なるようです。私はprotostuffについて深い知識はありませんが、オペレーティングシステムに依存しないJAVAを使用しているときにオペレーティングシステムに依存するのはかなり奇妙です...

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

java - Protostuff は無効なタグ (ゼロ) を含むプロトコル メッセージをスローします

wiki の例を使用して POJO をシリアル化しようとしていますが、「プロトコル メッセージに無効なタグ (ゼロ) が含まれています」というメッセージが表示されます。POJO を byte[] に変換し、メッセージ ブローカーに送信し、取得して逆シリアル化する必要があります。これをテストするための単体テストがあり、動作しているように見えますが、ブローカーを介して渡すと壊れます。これは私のコードです:

スタック トレースは次のとおりです。

私が間違っていることは何ですか?ありがとう!

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

build - akka-protostuff-serialization をビルドするには?

私は Java で akka (akka-2.2.1) を使用していますが、scala や sbt には詳しくありません。シリアライザーを次のいずれかに変更する必要があります。

https://github.com/romix/akka-protostuff-serialization

https://github.com/romix/akka-kryo-serialization

これらを構築する方法は?

0 投票する
2 に答える
899 参照

java - Protostuff を使用して未知のフィールドを保存する

私はこの Java コード ( source ) を持っています:

XML コードに、スキーマにない不明なフィールドが含まれているとします (つまり、提供された XML は新しいバージョンのソフトウェアによって生成されます)。

これらのフィールドを再度シリアル化するときに、これらのフィールドを保持するためのきれいな方法はありますか? Protocol Buffers が不明なフィールドを保持していることは知っています。

1 つの解決策は、元の XML をバッファーにコピーしてから、新しくシリアル化された XML を元の XML とマージすることですが、これは非常に複雑に思えます。