我是F#的新手,我想使用JsonProvider将简单的Json文件转换为CSV格式。这是我的F#脚本:
#r "./lib/FSharp.Data.dll"
open FSharp.Data
type Persons = JsonProvider<""" {
"persons": [
{
"id": "1",
"name": "User1",
"company": "",
"address": "Streed, City"
},
{
"id": "2",
"name": "User2",
"company": "",
"address": ""
}
]
} """>
let persons = Persons.GetSample()
for p in persons.Persons do
printfn "%i;%s" p.Id p.Name
// printfn "%i;%s;%s;%s" p.Id p.Name p.Company p.Address
如果我取消注释最后一行代码( printfn&#34;%i;%s;%s;%s&#34; p.Id p.Name p.Company p.Address )我得到以下编译器错误:
这个表达式应该有类型&#39;字符串&#39;但这里是类型选项
<string>
我想要实现的是以下2个CSV格式化的行:
1;User1;;Street, City
2;User2;;
如何在空字符串中转换选项?
答案 0 :(得分:4)
您可以在评论中使用Tomasz提到的模式匹配。
另一种选择是使用defaultArg
函数,该函数采用option<'T>
和类型'T
的默认值,该值在选项表示缺失值时使用。类似的东西:
for p in persons.Persons do
printfn "%i;%s;%s;%s" p.Id p.Name (defaultArg p.Company "") (defaultArg p.Address "")