F#:保存JSON数据

时间:2015-04-02 17:26:27

标签: json f#

我是编程新手,F#是我的第一语言。

以下是我的代码的相关部分:

let internal saveJsonToFile<'t> (someObject:'t) (filePath: string) =  
    use fileStream = new FileStream(filePath, FileMode.OpenOrCreate) 
    (new DataContractJsonSerializer(typeof<'t>)).WriteObject(fileStream, someObject)

let testList = new List<Fighter>()

saveJsonToFile testList<Fighter> @"G:\User\Fighters.json"

我之前创建了F#类型的F#记录。

当我尝试运行“saveJsonToFile testList @”G:\ User \ Fighters.json“”时,“testList”会以红色突出显示错误消息:“意外的类型参数”。

出了什么问题?我错过了什么?

1 个答案:

答案 0 :(得分:1)

首先,您的testList,而不是函数 其次,它没有通用的论证,其中的一切都是具体的。

如果您希望它是一个功能,请给它一个参数 如果你想要它是通用的,那就在体内说明。

let testList () = new List<'a>()
saveJsonToFile testList<Fighter>() @"G:\User\Fighters.json"

最后,您尝试创建的List可能会解析为F#自己的List,这是一个模块,而不是一个类型。
如果您打算创建.NET System.Collections.Generic.List,那么您需要指定完整的类型名称:

let testList () = new System.Collections.Generic.List<'a>()

但是如果您打算创建一个F#本地列表,请使用其构造函数之一:

let testList () = []