問題タブ [serialization]
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 - シリアライゼーション エンコーディングのテスト
テキスト文字列が特定のエンコーディングでバイト配列にシリアル化されていることを確認/テストする最良の方法は何ですか?
私の場合、XML 構造が可変文字長の UTF-8 エンコーディングを使用してバイト配列にシリアル化されていることを確認したいと考えています。例として、私の現在の醜い手順は、シリアル化する前に 2 バイトを必要とすることが知られている文字を構造体に挿入し、2 バイト文字を ASCII 文字に置き換えて、シリアル化された配列の長さを比較することです。これにより、2 バイト文字を含む配列の長さが +1 である 2 つのシリアル化された配列が生成されます。
さらに、ソリューションがJavaにとってエレガントである場合。バイト配列内のバイト シーケンスを探すエレガントな方法は思いつきません。(UTF-8 で目的の文字表現を表す既知のバイト シーケンスを探すために使用できます。)
c# - 存在しないmscorlib.XmlSerializers.DLLのFileNotFoundException
XmlSerializerを使用してmscorelib.dllの特定のタイプを逆シリアル化します
FileNotFoundException
これにより、アセンブリがロードされたときにキャッチがスローされます。
「ファイルまたはアセンブリ'mscorlib.XmlSerializers、Version = 2.0.0.0、Culture = neutral、PublicKeyToken=b77a5c561934e089'またはその依存関係の1つを読み込めませんでした。システムは指定されたファイルを見つけることができません。」
FusionLog:
mscorlib.XmlSerializers.DLLがないことを知っている限り、DLL名は.Netがシリアライザーを探して自動生成したものだと思います。
シリアル化を最適化するためにコンパイルするときにmyApplication.XmlSerializers.DLLを作成するオプションがあるので、これはフレームワークによるチェックの一部であると思います。
問題は、これがアプリケーションのロードに遅延を引き起こしているように見えることです-この時点で数秒間ハングしているようです。
これを回避またはスピードアップする方法はありますか?
c# - C# Type オブジェクトをシリアル化できますか?
次の方法で Type オブジェクトをシリアル化しようとしています。
これを行うと、Serialize の呼び出しで次の例外がスローされます。
「型 System.Text.StringBuilder は予期されていませんでした。XmlInclude または SoapInclude 属性を使用して、静的に認識されていない型を指定してください。」
Type
オブジェクトをシリアル化する方法はありますか? StringBuilder
それ自体をシリアル化しようとしているのではなく、クラスType
に関するメタデータを含むオブジェクトをシリアル化しようとしていることに注意してください。StringBuilder
c# - Web サービスの結果としての大きくて複雑なオブジェクト
紳士淑女の皆様、こんにちは!
OK、 ASP.NET Web Service Results, Proxy Classes and Type Conversionに関する私の他の質問に続きます。私は自分のプロジェクトで、自分の思考を制限する必要がある部分に来ました。
基本的に、Web サービスから返してクライアント アプリケーションで使用する必要がある、大きくて複雑なカスタム オブジェクトがあります。
ここで、前の説明に基づいて、これが戻り値の型としてプロキシ クラスの形式をとることがわかっています。これを克服するには、基本的にプロパティを一方から他方にコピーする必要があります。
この場合、それは私が本当に、本当に、本当にしたいことです! 避けたい!
それで、他にどのようにこれを行うことができるでしょうか?
私が現在考えているのは、オブジェクトを XML に完全にシリアル化できるようにしてから、Web サービスから XML を文字列として返すことです。次に、クライアントでデシリアライズします。これはかなりの属性装飾を意味しますが、少なくとも両方のエンドポイントのコードは軽量になります。つまり、.NET XML シリアライザーを使用するだけです。
これについてどう思いますか。
c# - クラス/メソッドの属性装飾を強制する
Large, Complex Objects as a Web Service Resultに関する最近の質問の続きです。私は、将来のすべての子クラスが XML にシリアライズ可能であることを保証する方法について考えてきました。
さて、明らかにIXmlSerializableインターフェースを実装してからリーダー/ライターをそれにチャックすることができますが、それは、それをしたいときはいつでもリーダー/ライターをインスタンス化する必要があることを意味するため、99.99% の時間は避けたいと思います。文字列で作業するので、自分で書くだけです。
ただし、XML にシリアル化するには、クラスとそのメンバーをXml で装飾するだけですか??? 属性 ( XmlRoot、XmlElementなど) を作成し、それをXmlSerializerとStringWriterに渡して文字列を取得します。これはすべて良いことです。文字列を返すメソッドを汎用ユーティリティ メソッドに入れるつもりなので、型などを気にする必要はありません。
私に関係するこれはこれです:クラスを必要な属性で装飾しないと、実行時までエラーはスローされません。
属性の装飾を強制する方法はありますか? これは FxCop で実行できますか? (私はまだ FxCop を使用していません)
アップデート:
やるべきことがたくさんあります。
FxCopに頼るのではなく、テストケースでリフレクションを使用するというアイデアが間違いなく好きです(すべてをまとめるのが好きです)。Fredrik Kalsethの答えは素晴らしかったです.コードを含めてくれてありがとう.自分でやり方を考えよう!
同様の提案については、他の人に+1してください:)
c# - XML シリアル化と継承された型
以前の質問に続いて、オブジェクト モデルを XML にシリアル化する作業を続けています。しかし、私は今問題に遭遇しました (quelle 驚き!)。
私が抱えている問題は、具体的な派生型によって設定された抽象基本クラス型のコレクションがあることです。
関連するすべてのクラスに XML 属性を追加するだけで十分だと思いました。悲しいことに、そうではありません!
だから私はグーグルで掘り下げましたが、なぜそれが機能していないのか理解しました. 実際、はXmlSerializer
XML との間でオブジェクトをシリアル化するために巧妙なリフレクションを行っていますが、抽象型に基づいているため、一体何と話しているのかを理解できません。罰金。
私はCodeProject でこのページに出くわしましたが、これは大いに役立つように見えます (まだ完全に読んだり消費したりしていません)。これを可能な限り迅速/軽量な方法で起動して実行するためのハック/トリック。
また、追加しなければならないことの 1 つは、ルートをたどりたくないということです。XmlInclude
それとの結合が多すぎるだけでなく、システムのこの領域は大規模な開発が行われているため、メンテナンスの頭痛の種になるでしょう!
java - バイナリデータを文字列に変換して Java に戻すにはどうすればよいですか?
ファイルにバイナリデータがあり、バイト配列に読み込んで問題なく処理できます。ここで、ネットワーク接続を介してデータの一部を XML ドキュメントの要素として送信する必要があります。私の問題は、データをバイト配列から文字列に変換してバイト配列に戻すと、データが破損することです。これを 1 台のマシンでテストして、問題を文字列変換に切り分けたところ、XML パーサーやネットワーク トランスポートによって破損していないことがわかりました。
私が今持っているのは
バイナリを文字列に変換し、データを失うことなく元に戻す方法を知っている人はいますか?
回答済み: ありがとう、サム。私はばかのように感じます。私のSAXパーサーが文句を言っていたので、昨日これに答えてもらいました。この一見別の問題に遭遇したとき、何らかの理由で、それが同じ問題の新しい症状であるとは思いもしませんでした。
編集: 完全を期すために、 Apache Commons CodecパッケージのBase64クラスを使用してこの問題を解決しました。
ruby - Rubyでラムダ(Proc)をマーシャリングするにはどうすればよいですか?
Joe Van Dykは Ruby メーリング リストに次のように質問しました。
やあ、
Ruby では、lambda/proc オブジェクトをマーシャリングできないと思いますよね? Lispや他の言語でそれは可能ですか?
私がやろうとしていたこと:
そのため、何をすべきかのコンテキスト/コードを含むラムダ オブジェクトを BackgroundJob に送信しています。しかし、それは不可能だったと思います。プログラムの実行後に何をすべきかの指示を含む通常の Ruby オブジェクトをマーシャリングすることになりました。
ジョー
wcf - WCF - ドメイン オブジェクトと IExtensibleDataObject
典型的なシナリオ。internally
サーバー ファームと複数の分散クライアントおよびローカル クライアントとの間の通信には、昔ながらの XML Web サービスを使用します。サードパーティは関与せず、自社と顧客が使用するアプリケーションのみを使用します。
XML
WS
現在、モデルへの移行を検討しWCF/object-based
ており、さまざまなアプローチを試しています。そのうちの 1 つは、ドメイン オブジェクト/集合体をワイヤ経由で直接転送し、それらの DataContract 属性を呼び出す可能性があります。
で Order プロパティを使用するIExtensibleDataObject
ことにより、単純なプロパティのバージョン管理の問題に対処できるはずです (すべてのクライアントを制御し、簡単に強制更新できることを思い出してください)。DataContract
DataMembers
DTOs
専用の転送専用のデータ転送オブジェクト ( ) をネットワーク経由で使用する必要があるとよく耳にします。
なんで?それでもそうする理由はありますか?サーバー側とクライアント側で同じドメイン モデルを使用します。もちろん、コレクションの事前入力などは、正しく「必要」と判断された場合にのみ行います。コレクション プロパティは、サービス ロケーターの原則と IoC を利用してNHibernate-based
、(サーバー側で) データを直接フェッチする"サービス" と、サーバー ファームWCF
と対話するクライアント側の "サービス" クライアントのいずれかを呼び出します。WCF
では、なぜ を使用する必要があるのDTOs
でしょうか。
java - 別の言語で逆シリアル化する
log4j ネットワーク アダプタは、イベントをシリアル化された Java オブジェクトとして送信します。このオブジェクトをキャプチャして、別の言語 (python) でデシリアライズできるようにしたいと考えています。これは可能ですか?
注ネットワーク キャプチャは簡単です。それは単なるTCPソケットであり、ストリームを読み込んでいます。難点はデシリアライズ部分