请考虑这个由男人和女人组成的数据集,并根据几个变量在第二时刻过滤:
type ls = JsonProvider<"...">
let dt = ls.GetSamples()
let dt2 =
dt |> Seq.filter (fun c -> c.Sex = "male" && c.Height > Some 150)
dt2
[{"sex":"male","height":180,"weight":85},
{"sex":"male","height":160" "weight":60},
{"sex":"male","height":180,"weight":85}]
假设我想添加第四个键“体重指数”或“bmi”,并且其值大致由“体重”/“身高”给出。因此,我希望:
[{"sex":"male","height":180,"weight":85, "bmi":(180/85)},
{"sex":"male","height":160" "weight":60, "bmi":(160/60},
{"sex":"male","height":180,"weight":85, "bmi":(180/85)}]
我认为map.Add可能会有所帮助。
let dt3 = dt2.Add("bmi", (dt2.Height/dt2.Weight))
不幸的是,它返回一个错误:
error FS0039: The field, constructor or member 'Add' is not defined
我确信我的代码中还有其他错误,但如果没有此功能,我实际上无法查找它们。我至少正确地解决了这个问题吗?
答案 0 :(得分:4)
创建JSON的修改版本遗憾的是,F#数据类型提供程序并不容易。让我们难以理解的是,我们可以从源JSON推断出类型,但我们无法“预测”人们可能想要添加的字段类型。
为此,您需要访问JSON值的基础表示并对其进行操作。例如:
bitmap