簡體   English   中英

更改不可變對象F#

[英]Changing an immutable object F#

我認為這個標題是錯誤的,但不能創建一個標題,從抽象的角度來反映我想要實現的目標。

我正在編寫一個調用服務並將數據作為JSON字符串檢索的函數。 該函數使用JSON類型提供程序解析字符串。 在某些條件下,我想修改該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對象比給定的平面示例更復雜,並且包含深層次結構。

是的,您需要創建一個新對象,更改所需的位數,然后使用現有對象的值。 我們前后為XML和JSON類型提供程序添加了寫API。 您會注意到代表您的JSON的類型具有構造函數。 您可以在此鏈接的底部看到此示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM