【问题标题】:FSharp.Data.JsonProvider - Getting json from typesFSharp.Data.JsonProvider - 从类型中获取 json
【发布时间】:2014-03-09 08:41:21
【问题描述】:

FSharp.Data.JsonProvider 提供了一种从 json 转换为 F# 类型的方法。是否可以反向进行,即声明由 FSharp.Data.JsonProvider 创建的类型之一的实例,将字段值设置为我需要的值,然后获取等效的 json?

我已经尝试过这样的事情,

type Simple = JsonProvider<""" { "name":"John", "age":94 } """>

let fred = Simple( 
            Age = 5, // no argument or settable property 'Age'
            Name = "Fred")

【问题讨论】:

标签: f# type-providers f#-data


【解决方案1】:

最新版本的 F# Data 现在支持此功能。请参阅http://fsharp.github.io/FSharp.Data/library/JsonProvider.html 中的最后一个示例。

你的例子是:

type Simple = JsonProvider<""" { "name":"John", "age":94 } """>
let fred = Simple.Root(age = 5, name = "Fred")

【讨论】:

    【解决方案2】:

    这是 C# 优于 F# 的一个领域,至少在 Visual Studio 中是这样。您可以将 JSON 示例代码复制到剪贴板,并在 Visual Studio 中使用 Edit -> Paste Special -> Paste JSON As Classes,它将创建一个与 JSON 示例匹配的类。从那里您可以轻松地使用 F# 中的类。

    更多关于特殊粘贴here

    希望 F# 也能尽快推出匹配功能。

    【讨论】:

    • 我猜TP的重点是你不需要写下那个类,它是动态生成的..
    • @nicolas 我不确定我是否同意,因为询问者想要为 TP 类分配值,因此需要将其记录在“某处”(JSON 文件位于“某处”)。我认为类定义比 JSON 文件更清晰。
    • 我的意思是,据我所知,TP 的目的是没有任何中间类。这与您使用生成的类型无关(变异、写入、通过网络发送等...)
    • 虽然这可能是真实的皮特,但这并不能帮助张贴者解决他/她的问题。他们想知道如何在 F# 中做某事。
    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多