【发布时间】:2014-08-18 07:07:43
【问题描述】:
我认为这个标题是错误的,但无法创建一个抽象地反映我想要实现的标题。
我正在编写一个调用服务并将数据作为 JSON 字符串检索的函数。该函数使用JSON type provider 解析字符串。在某些情况下,我想修改该 JSON 对象的属性,然后返回修改后的对象的字符串。因此,如果呼叫的响应是
{"property1" : "value1","property2" : "value2", "property3": "value3" }
我想将 property3 更改为新值,然后返回 JSON 字符串。
如果 JsonProvider 是可变的,这将是一个类似的练习:
type JsonResponse =
JsonProvider<""" {"property1" : "value1",
"property2" : "value2",
"property3": "value3" } """>
let jsonResponse = JsonResponse.Parse(response)
jsonResponse.Property3 <- "new value"
jsonResponse.ToString()
但是,这不起作用,因为无法设置属性。我正在尝试确定解决此问题的最佳方法。我很高兴根据原始响应初始化一个新对象,但修改了参数,但我不确定是否有简单的方法来实现这一点。
作为参考,JSON 对象比给出的平面示例涉及更多,并且包含更深的层次结构。
【问题讨论】:
-
如果
jsonResponse的类型是一条记录,你可以做{ jsonRespose with Property3 = "new value" }。但这似乎不起作用。 -
很遗憾,类型提供者目前无法创建记录类型。
标签: json f# type-providers f#-data