2016-07-26 10 views
3

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

+0

Sie meinen wie Bson? Mongodb zum Beispiel? Könnten Sie uns etwas genaueres sagen? – s952163

+1

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

Antwort

5

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">