2016-08-10 24 views
0

我需要使用這樣的:如何使用字符串而不是流?

http://www.newtonsoft.com/json/help/html/SerializeToBson.htm

這是代碼對象轉換爲BSON格式。我感興趣的代碼是這樣的:

System.IO.MemoryStream stream = new System.IO.MemoryStream(); 
using (Newtonsoft.Json.Bson.BsonWriter writer = new Newtonsoft.Json.Bson.BsonWriter(stream)) 
{ 
    Newtonsoft.Json.JsonSerializer serializer = new Newtonsoft.Json.JsonSerializer(); 
    serializer.Serialize(writer, message); 
} 

但是,我想要一個字符串的結果。那麼,我真的不得不使用流或文件來寫東西,然後讀取它以將其放入字符串中嗎?

必須有更好的方法來做到這一點?

+1

修改您的問題以總結鏈接正在做什麼。不要讓我們去那裏得到你所談論的內容。 –

+0

我已更新它 –

+0

BSON代表*** Binary ***結構化對象表示法。 –

回答

4

您可以從使用StreamReader.ReadToEnd()得到

 string bsonText = ""; 

     using(MemoryStream stream = new MemoryStream()) 
     using(StreamReader reader = new StreamReader(stream)) 
     using (BsonWriter writer = new Newtonsoft.Json.Bson.BsonWriter(stream)) 
     { 
      JsonSerializer serializer = new JsonSerializer(); 
      serializer.Serialize(writer, message); 

      stream.Position = 0; 
      bsonText = reader.ReadToEnd(); 
     } 

或也Encoding.UTF8.GetString()

 using(MemoryStream stream = new MemoryStream()) 
     using (BsonWriter writer = new Newtonsoft.Json.Bson.BsonWriter(stream)) 
     { 
      JsonSerializer serializer = new JsonSerializer(); 
      serializer.Serialize(writer, message); 

      bsonText = Encoding.UTF8.GetString(stream.ToArray()); 
     } 

順便說一句,誰知道你會從該得到什麼,因爲BSON是一個二進制對象表示,它不像JSON!

相關問題