2016-07-26 9 views
3

私のプロジェクトは、キー値ベースのNoSQLデータベースに格納されているデータを処理します。値の部分はバイトストリームとして格納されます。型プロバイダがバイトストリームのスキーマに従ってデータを読み取るようにします。のデータは、jsonスキーマとして表されます。このデータを読み込むためにJson型プロバイダを使用できますか?いいえ、私の問題の解決策は何ですか?F#型プロバイダ

+0

bsonの意味ですか?例えばモンゴブ?あなたはいくつかの詳細を提供できますか? – s952163

+1

Clarification requested:データはバイト配列( 'byte []')です。このバイト配列のスキーマはJSONドキュメント(またはJSONスキーマ)に記述されていますか?もしそうなら、JSON型プロバイダはあなたを助けません。より良い答えを得るために、いくつかの例を挙げる必要があると思います。 – FuleSnabel

答えて

5

あなたのDBはバイトストリームとしてJSONを保存する場合は、単に通常のstringとしてJSONを取得するために、(必要に応じて適切なエンコーディングでUTF8を置き換える)System.Text.Encoding.UTF8.GetStringを通してそれをデコードします。

その後、あなたは限り、あなたはを使用するタイプのプロバイダのコンパイル時サンプルを提供して、他のストリーム、上のように、そのストリームにJSONタイプのプロバイダを使用することができます。スキーマは機能しません。

つまり、データベースのJSONコンテンツの完全なサンプルを抽出し、そのサンプルを使用して、コードに直接埋め込まれた文字列として、または開発マシンが提供するファイルURIとして、提供された型を宣言する必要がありますアクセスすることができます。

サンプルがデータベースの実際の構造と一致する限り、それは実行時に機能します。

// embedded in the code 
type Simple1 = JsonProvider<""" { "name":"John", "age":94 } """> 

// referenced 
type Simple2 = JsonProvider<@"C:\MyProjectFolder\sample.json">