Mein Projekt behandelt Daten, die in einer Schlüsselwert-basierten NoSQL-Datenbank gespeichert ist. Der Wert Teil wird als Byte-Stream gespeichert. Ich möchte einen Typ Provider meine Daten nach dem Schema des Byte-Streams zu lesen der Daten wird als JSON-Schema dargestellt. Kann ich einen JSON-Typ-Provider verwenden, um diese Daten zu lesen? Wenn nein, was kann dann die Lösung für mein Problem sein?F # Typ Provider
Antwort
Wenn Ihre DB der JSON als Bytestrom speichert, dekodieren einfach durch System.Text.Encoding.UTF8.GetString
(ersetzen UTF8
mit der entsprechenden Codierung, falls erforderlich), um die JSON als reguläres string
zu bekommen.
Dann können Sie den JSON-Typ-Anbieter auf diesem Strom wie auf jedem anderen Strom verwenden, solange Sie bieten eine Kompilierung- Probe für den Typ-Provider zu verwenden. Ein Schema funktioniert nicht. Mit anderen Worten, Sie müssen ein vollständig repräsentatives Beispiel des JSON-Inhalts Ihrer Datenbank extrahieren und anschließend die angegebenen Typen mit diesem Beispiel entweder als direkt in den Code eingebettete Zeichenfolge oder als Datei-URI Ihres Entwicklungscomputers deklarieren kann Zugreifen.
Solange das Beispiel der tatsächlichen Struktur Ihrer Datenbank entspricht, wird es zur Laufzeit funktionieren.
// embedded in the code
type Simple1 = JsonProvider<""" { "name":"John", "age":94 } """>
// referenced
type Simple2 = JsonProvider<@"C:\MyProjectFolder\sample.json">
Sie meinen wie Bson? Mongodb zum Beispiel? Könnten Sie uns etwas genaueres sagen? – s952163
Klarstellung angefordert: Ihre Daten sind ein Bytearray ('byte []'). Das Schema dieses Bytearrays wird in einem JSON-Dokument (oder JSON-Schema) beschrieben. Wenn dies der Fall ist, kann der JSON-Typ-Provider Ihnen nicht helfen. Für eine bessere Antwort denke ich, dass Sie einige Beispiele geben müssen. – FuleSnabel