問題タブ [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.
java - 循環参照と組み合わせてジェネリックを使用すると、プロトスタッフがオブジェクトを破損するのはなぜですか?
循環参照とジェネリックスを含むprotostuffバイナリを使用しています。非常に単純なシナリオとして、次のクラスがあります。
////////////////////////////////////////////////// /////////////////////////////
////////////////////////////////////////////////// /////////////////////////////
次の単体テストを実行して、ラウンドトリップのシリアル化/逆シリアル化が正しく実行されたことを確認すると、非常に奇妙な結果が得られます。最後のアサーションは失敗します:
Protostuffは、子クラスから親に戻る循環参照を破損しています。最後のアサーションは合格するはずですが、何らかの理由でクラスはコンテナタイプです。
私は何が間違っているのですか?
強く型付けされたオブジェクトを使用するようにContainerクラスを変更すると、単体テストに合格します。これはバグですか?
私が使用しているMavenアーティファクトは次のとおりです。
java - ProtobufとProtostuff間の互換性
Protostuffコードジェネレーターによって生成されたクラスは、Protobufによって作成されたクラスと互換性がありますか?
いくつかの単純なメッセージを(逆)シリアル化しようとしましたが、いくつかの例外がありました。
プロトファイル(WrapperClass.proto)
ProtostuffからProtobufテスト(例)
問題:
すべてがProjectIdで機能しますが、UserIdとChannelId(すべてがもう少し複雑です)では、次のようになります。
そしてその逆:
ProtobufからProtostuffへのテスト(例)
問題
繰り返しますが、ProjectId以外のすべてについては、例外があります。
私は不可能なことを試みていますか、それとも何か間違ったことをしているだけですか?
protostuff - プロトスタッフを使用して、削除されたエンティティの読み取りをスキップする方法は?
私は Protostuff を使用してデータの読み取り/書き込みを行うチームの一員です。これは、mergeFrom
クラスから拡張されたクラスのメソッドですSchema
。
私の現在のタスクは、そのデータのスキーマが既に削除されているデータの読み取りをスキップすることです。インターフェイスのhandleUnknownFieldメソッドを見ていInput
ます。
これをすでに経験した人はいますか?
java - Protostuff を使用して Guava の不変コレクションをどのようにシリアル化しますか?
私は protostuff-runtime を使用してオブジェクト グラフをシリアル化します。これらのオブジェクトの一部は、ImmutableList や ImmutableSet などの Guava 不変コレクションへの参照を持っています。Protostuff は、インスタンスを構築し、inputStream からそれに要素を「追加」しようとするため (コレクションは不変であるため、失敗します)、そのままではこれらのコレクションをデシリアライズできません。
すぐに使えるライブラリ/プロトスタッフプラグインを知っていますか? そうでない場合、これを自分で行うベストプラクティスはありますか?
私が調査したところ、プロトスタッフには「デリゲート」の概念があり、特定の型のシリアル化を制御できることがわかりました。それは私の問題に対する答えのようですが、うまくいかないようです。
これが私が今持っているものです:
テストは次の例外で失敗します。これは、デリゲートが null 値のみを逆シリアル化していることを意味しているようです。
これは正しいアプローチですか?私は何が欠けていますか?
これは、Null ポインター例外とは何ですか? どうすれば修正できますか?の複製ではありません。意味のない質問です。Protostuff デリゲートを使用して不変コレクションを逆シリアル化しようとすると NPE がスローされると述べたという事実は、これが「NPE とは何か」と重複するという意味ではありません。あらゆる方法、形、または形式で質問します。
java - piqi 定義を使用して Java を介して C++ から JSON データを読み取るにはどうすればよいですか?
piqi スキーマを使用して json API を定義するサードパーティの REST Web サービスを使用します。現在のアーキテクチャでは、このデータを Java クライアントを介して読み取り、c++ バイナリに転送する必要があります。理想的には、すべての POJO と c++ 構造体、およびデータ変換 (json->java、java->c++) ロジックを生成したいと考えています。protobuf、protostuff、thrift のさまざまな組み合わせを調査してきましたが、フローにはまだギャップがあります。誰にも提案がありますか?
java - Android で Protostuff のシリアライズされたバイトコードを PC でデシリアライズできない
PC でシリアル化されたモデルを逆シリアル化しようとすると、下部に奇妙なエラーが表示されます。PC で同じモデルをシリアル化し、PC で逆シリアル化する場合と同様に、逆シリアル化は Android でも機能します。したがって、これは相互運用性の問題のようです。
同じ方法でシリアル化するにはどうすればよいですか?
シリアル化する必要がある私のモデルには、次の POJOS とコレクションがあります。
Android と Windows PC ではマップのシリアル化が異なるようです。私はprotostuffについて深い知識はありませんが、オペレーティングシステムに依存しないJAVAを使用しているときにオペレーティングシステムに依存するのはかなり奇妙です...
java - Protostuff は無効なタグ (ゼロ) を含むプロトコル メッセージをスローします
wiki の例を使用して POJO をシリアル化しようとしていますが、「プロトコル メッセージに無効なタグ (ゼロ) が含まれています」というメッセージが表示されます。POJO を byte[] に変換し、メッセージ ブローカーに送信し、取得して逆シリアル化する必要があります。これをテストするための単体テストがあり、動作しているように見えますが、ブローカーを介して渡すと壊れます。これは私のコードです:
スタック トレースは次のとおりです。
私が間違っていることは何ですか?ありがとう!
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
これらを構築する方法は?
java - Protostuff を使用して未知のフィールドを保存する
私はこの Java コード ( source ) を持っています:
XML コードに、スキーマにない不明なフィールドが含まれているとします (つまり、提供された XML は新しいバージョンのソフトウェアによって生成されます)。
これらのフィールドを再度シリアル化するときに、これらのフィールドを保持するためのきれいな方法はありますか? Protocol Buffers が不明なフィールドを保持していることは知っています。
1 つの解決策は、元の XML をバッファーにコピーしてから、新しくシリアル化された XML を元の XML とマージすることですが、これは非常に複雑に思えます。