所以我有以下的F#方法您是否可以将解析的JSONProvider结果作为Model对象返回以在MVC视图中使用?
static member ReadInstagramSearch() =
let data = Http.Request("https://api.instagram.com/v1/users/search?q=SomeUSer&client_id=someclientid")
let res = FsUserSearch.Parse(data)
res.Data.[0]
如果我有一个C#控制器,我把这种方法用反正是有使用该结果在View?我试着只是
@Model.FirstName
简单的访问,但是这给了我一个异常
'FSharp.Data.RuntimeImplementation.JsonDocument' does not contain a definition for 'FirstName'
是我把那JsonDocument成一个强类型Model对象唯一的选择?然后返回?
这是使用 http://fsharp.github.io/FSharp.Data/library/JsonProvider.html
而且我JsonProvider被定义为
type FsUserSearch = JsonProvider<"""
{
"data": [{
"username": "jack",
"first_name": "Jack",
"profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_66_75sq.jpg",
"id": "66",
"last_name": "Dorsey"
}]
}""">
好的,这就是我的想法。我正在学习F#的过程中,所以很好奇,如果有一个功能,我不知道..我尝试了一点扩展方法和C#真的不喜欢他们。我添加了一个使用“FSharp.Data.Json.Extensions”,它抱怨在FSharp.Data.DesignTime和FSharp.Data dll中都引用了该DLL。该扩展从F#中正常工作,但不在C#中。所以我可能会去记录类型,但我希望是懒惰的:-)但我想我的新F#的知识,我可以使他们现在更快,更少的仪式。感谢您的快速回复! –
我认为记录是最简单的选择...至于DLL,C#部分应该只需要'FSharp.Data.dll'(“DesignTime”仅用于类型提供程序,并且不应该在C#项目中需要 - 但也许Visual Studio将它复制到那里,这可能会以某种方式混淆ASP.NET ...) –
是的,当我添加它的时候它与nuget包一起出现......没有它就很好地编译。记录效果很好,我也使用了JsonToXML F#示例,这些示例很好地将JSON数据转换为XML数据,我可以将这些数据存储到XML字段中,以便这样做:-) –