Ich habe eine Zeichenfolge, die ein JSON enthält. Das einzige, was ich über dieses JSON weiß, ist, dass es gültig ist. Wie wird diese Zeichenfolge in BSON umgewandelt?Wie konvertiert man JSON zu BSON mit Json.NET
Antwort
Die BsonWriter
von Newtonsoft.Json
ist veraltet.
Sie benötigen ein neues nuget-Paket Json.NET BSON
genannt hinzufügen (Suche nur für newtonsoft.json.bson
) und arbeiten mit BsonDataWriter
und BsonDataReader
statt BsonWriter
und 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);
}
}
Ich denke, das für Sie
MongoDB.Bson.BsonDocument BSONDoc
= MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(json);
den Trick tun
Sie auch einen Blick auf Serialize to BSON und C# - Converting JSON string to BSON document
https://www.nuget.org/packages/Newtonsoft.Json
PM> Install-Package Newtonsoft.Json -Version haben 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);
}
}
B Erhöre! Es gibt eine viel einfachere Art und Weise, dies zu tun:
BsonDocument doc = BsonDocument.Parse("{\"your\": \"json\", \"string\": \"here\"}");
während json
in meinem Projekt mit i bemerkt, dass es einfach und süß json
in ein bson
Dokument zu konvertieren.
string json = "{\"Name\":\"Movie Premiere\"}";
BsonDocument document = BsonDocument.Parse(json);
jetzt können Sie document
als Bson überall verwenden.
Hinweis- Ich verwende diese document
zum Einfügen in MongoDb
Datenbank.
In der Hoffnung, dass dies Ihnen helfen wird.
- 1. Wie konvertiert man Datentabelle in JSON-String mit json.net?
- 2. Wie konvertiert man C# generische Liste in Json mit json.net?
- 3. Json wird in BSON
- 4. Wie konvertiert man Blaze Datenobjekte zu Json?
- 5. Wie konvertiert man von Json zu Protobuf?
- 6. Vergleichen Sie JSON und BSON
- 7. JSON mit Json.net analysieren
- 8. C# zu JSON Serialisierung mit JSON.Net
- 9. Wie konvertiert man HTML zu JSON mit PHP?
- 10. Benutzerdefinierte JSON zu XML-Konvertierung mit JSON.Net
- 11. Json: wie man die Escape-Zeichen mit json.net richtig entfernen
- 12. Deserialize malformed JSON mit JSON.NET
- 13. Deserialize json mit json.net C#
- 14. Problem Deserialisierung JSON mit JSON.NET
- 15. Ausnahme: kann nicht von BSON Typ EOO zu Datum konvertiert
- 16. Wie konvertiert man MongoDB BSONDocument zu gültigem JSON in PHP?
- 17. Wie konvertiert man Objekt zu Json in Nim
- 18. Wie konvertiert man HttpEntity in JSON?
- 19. Wie konvertiert man JSON in einen String?
- 20. Wie konvertiert man XML-Code in JSON
- 21. json.net Liste Serialisierung zu JSON Array
- 22. Asp.net MVC Json oder Json.net?
- 23. Wie konvertiert man HashMap zu json Array in Android?
- 24. Wie man JSON zu assoziativem Array in JSP konvertiert
- 25. JSON Json.Net Parsen
- 26. Deserialise JSON mit numerischen Schlüssel mit Json.NET
- 27. JSON-Deserialisierung - Array-Indizes zu Eigenschaften mit JSON.NET zuordnen
- 28. Json.NET: Deserialisieren json Arrays
- 29. Json.NET: Deserialisieren Nested Json
- 30. Wie konvertiert man ein JSON-Array in ein JSON-Objekt?
Update für Benutzer möglicherweise diese verwenden möchten: 'BsonWriter 'ist veraltet, überprüfe meine Antwort –