F#类型提供者

时间:2016-07-26 09:35:36

标签: f# type-providers

我的项目处理存储在基于NoSQL数据库的键值中的数据。值部分存储为字节流。我希望类型提供程序根据字节流的模式读取我的数据。数据的模式表示为json模式。我可以使用Json类型提供程序来读取此数据吗?如果没有那么什么可以解决我的问题?

1 个答案:

答案 0 :(得分:5)

如果您的数据库将JSON存储为字节流,只需通过System.Text.Encoding.UTF8.GetString对其进行解码(如果需要,使用适当的编码替换UTF8),以便将JSON作为常规string

然后,您可以在该流上使用JSON类型提供程序,就像在任何其他流上一样,只要您提供编译时示例供类型提供程序使用。架构不起作用。

换句话说,您需要提取数据库的JSON内容的完全代表性样本,然后使用该样本声明提供的类型,作为直接嵌入代码中的字符串,或作为文件URI您的开发机器可以访问。

只要示例与数据库的实际结构匹配,它就会在运行时运行。

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

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