2015-11-13 23 views

Odpowiedz

3

BsonWriter z Newtonsoft.Json jest przestarzała.

Trzeba dodać nową Nuget-pakiet o nazwie Json.NET BSON (wystarczy wyszukać newtonsoft.json.bson) i pracować z BsonDataWriter i BsonDataReader zamiast BsonWriter i BsonReader:

public static string ToBson<T>(T value) 
{ 
    using (MemoryStream ms = new MemoryStream()) 
    using (BsonDataWriter datawriter = new BsonDataWriter(ms)) 
    { 
     JsonSerializer serializer = new JsonSerializer(); 
     serializer.Serialize(datawriter, value); 
     return Convert.ToBase64String(ms.ToArray()); 
    } 

} 

public static T FromBson<T>(string base64data) 
{ 
    byte[] data = Convert.FromBase64String(base64data); 

    using (MemoryStream ms = new MemoryStream(data)) 
    using (BsonDataReader reader = new BsonDataReader(ms)) 
    { 
     JsonSerializer serializer = new JsonSerializer(); 
     return serializer.Deserialize<T>(reader); 
    } 
} 
2

https://www.nuget.org/packages/Newtonsoft.Json

PM> Install-package Newtonsoft.Json -version 7.0 .1

using Newtonsoft.Json.Bson; 
using Newtonsoft.Json; 

class Program 
    { 
     public class TestClass 
     { 
      public string Name { get; set; } 
     } 

     static void Main(string[] args) 
     { 
      string jsonString = "{\"Name\":\"Movie Premiere\"}"; 
      var jsonObj = JsonConvert.DeserializeObject(jsonString); 

      MemoryStream ms = new MemoryStream(); 
      using (BsonWriter writer = new BsonWriter(ms)) 
      { 
       JsonSerializer serializer = new JsonSerializer(); 
       serializer.Serialize(writer, jsonObj); 
      } 

      string data = Convert.ToBase64String(ms.ToArray()); 

      Console.WriteLine(data); 
     } 
    } 
+0

aktualizacji dla użytkowników chcieć użyć tego: 'BsonWriter 'jest przestarzały, sprawdź moją odpowiedź –

3

B ehold! Jest znacznie prostszy sposób, aby to zrobić:

BsonDocument doc = BsonDocument.Parse("{\"your\": \"json\", \"string\": \"here\"}"); 
2

podczas korzystania json w moim projekcie zauważyłem, że istnieją proste i słodki sposób przekonwertować json do dokumentu bson.

string json = "{\"Name\":\"Movie Premiere\"}"; 
BsonDocument document = BsonDocument.Parse(json); 

teraz możesz użyć document jako bander wszędzie.

Uwaga- Używam tego document do wstawienia do bazy danych MongoDb.

Licząc nadzieję, że to pomoże.