5

C# のシリアル化されたオブジェクトを含むバイナリ ファイルがあります。

Python でコンテンツを読み取ることができますが、次のような結果が得られます。

'T\x00\x00\x00Test.Jobs.GenerateJobRequest, POC.Server\xca\x02-\xa2\x02\t\x82\x01\x06\x1a\x04myahR\x1d\x08\xfe\xff\xff\xff\xff\xff\xff\xff\xff\x01\x12\x10Data Lite Exportp\t\n\x16Do_Ko_Change-Job__ID_23\x10\x0c\x18\xa7\xb9\x18(\x012\x00:\x00H\xbc\x08')

このオブジェクトを Python でデシリアライズする方法はありますか?

これは最適な解決策ではなく、JSON、XML の方が優れていることに同意します。ただし、データをシリアル化するプロセスを制御することはできません。私は消費者にすぎません。

4

4 に答える 4

2

あなたの質問から、使用している Python のバージョン (CPython、Jython、IronPython) が不明です。しかし、CPython を使用していると仮定します。IronPython の場合は些細なことです。

CPython、Python .NET用のライブラリがあります。.NET と Python の間のバインディングとして機能し、非常にうまく機能します。ジェネリックもサポートされています。もう積極的にサポートされていないようですが、私はしばらく使用しています。それは魅力のように機能します。

コンパイルするには Visual Studio が必要ですが、おそらく Visual Studio Express でも動作するでしょう (わかりませんが)。

これにより、任意の .NET-dll をインポートできます。C# で逆シリアル化できると仮定すると、Python でも逆シリアル化できるはずです。

于 2013-01-10T06:37:10.247 に答える
1

シリアル化されたバイナリ データの公式に文書化された形式はありません。私が遭遇した最も近いものはhttp://primates.ximian.com/~lluis/dist/binary_serialization_format.htmでした。したがって、これを行うサードパーティの Python パッケージを入手する可能性はほとんどありません。あったとしても、将来的に壊れる可能性があります。

Binary Serialization を使い続けたい場合は、IronPython を使用し、CLR に依存してデータをシリアル化することをお勧めします。

または、CLR を超えた相互運用性のために、SOAP または XML シリアライゼーションのいずれかを使用します。

于 2013-01-10T06:15:34.670 に答える
0

いいえ、合理的な時間枠内で、あなたが望む方法でそれを行うことはできません.

それを XML にデシリアライズしてから、このようなものを使用して Python のリスト/マップに変換する必要があります。

于 2013-01-10T06:11:34.580 に答える