相关疑难解决方法(0)

更改不可变对象F#

我认为这个标题是错误的,但不能创建一个标题,从抽象的角度来反映我想要实现的目标.

我正在编写一个调用服务并将数据作为JSON字符串检索的函数.该函数使用JSON类型提供程序解析字符串.在某些条件下,我想修改该JSON对象的属性,然后返回修改对象的字符串.因此,如果来自呼叫的响应是

{"property1" : "value1","property2" : "value2", "property3": "value3" }
Run Code Online (Sandbox Code Playgroud)

我想将property3更改为新值,然后返回JSON字符串.

如果JsonProvider是可变的,这将是一个练习,如:

type JsonResponse = 
        JsonProvider<""" {"property1" : "value1", 
                          "property2" : "value2",
                          "property3": "value3" } """>

let jsonResponse = JsonResponse.Parse(response)
jsonResponse.Property3 <- "new value"
jsonResponse.ToString()
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,因为无法设置属性.我想确定解决这个问题的最佳方法.我很乐意根据原始响应初始化一个新对象,但修改了参数,但我不确定是否有一种简单的方法可以实现这一点.

作为参考,JSON对象比给定的平面示例更复杂,并且包含深层次结构.

f# json type-providers f#-data

8
推荐指数
1
解决办法
520
查看次数

标签 统计

f# ×1

f#-data ×1

json ×1

type-providers ×1