2016-07-25 7 views
2

私はJsonからBsonを生成しようとしています。私はJson.Netを使ってみましたが、ライブラリが整数フィールド用のuint64を生成する文書化された動作があるようです。残念ながらuint32を使用する必要があります。'MongoDB.Bson.BsonDocument'タイプのオブジェクトを 'MongoDB.Bson.BsonBinaryData'にキャストできません

私はmongodb bsonライブラリを使用しようとしています。 BsonDocumentをBsonBinaryDataに変換する方法はわかりません。

//Works well, I can inspect with watch 
MongoDB.Bson.BsonDocument doc = MongoDB.Bson.BsonDocument.Parse(json); 

//Invalid cast exception 
byte[] data = doc.AsByteArray; 

答えて

1

拡張メソッドToBson()を使用し、BsonDocumentインスタンスの生のバイト配列表現を取得します。バイト配列表現からBsonDocumentを作成するには、BsonDocumentから派生し、コンストラクタ引数としてバイト配列を取るRawBsonDocumentのインスタンスを作成します。メモリpポイントは何とか解放する必要がありますすること

public static BsonDocument CallCFunction(BsonDocument doc) { 
    byte[] input = doc.ToBson(); 
    int length = input.Length; 
    IntPtr p = DllImportClass.CFunction(ref length, input); 
    if (p == IntPtr.Zero) { 
    // handle error 
    } 
// the value of length is changed in the c function 
    var output = new byte[length]; 
    System.Runtime.InteropServices.Marshal.Copy(p, output, 0, length); 
    return new RawBsonDocument(output); 
} 

注:ここでは

は、ネイティブC関数呼び出しにパラメータを渡すと、結果を取得するために、2つのBSONドキュメントを使用するための一例です。

+0

あなたが共有しているこの情報は印象的ではありません。それは私が(検索の数日の間)今までのような簡単な解決策を見つけることができなかっただけで十分である、簡単に人々によってグーグル探検することができる投稿を書く!どうもありがとう – Ibrahim

関連する問題