[英]Serialise inner JsonValue
我正在嘗試使用 Json 類型提供程序來創建類型並遍歷列表。 但是,我還需要訪問每個項目的序列化 json。
這是我所擁有的
#r "nuget: FSharp.Data"
#r "nuget: System.Text.Json"
open FSharp.Data
open System.Text.Json
type Users = JsonProvider<"""{"users":[{"id":1, "name": "John"}, {"id":2, "name": "Paul"}]}""">
let data = Users.GetSample().Users
let printProduct (id:int, userJson: string) =
printfn "%i %s" id userJson
let returnIdandJson() =
data |> Seq.map(fun x-> (printProduct (x.Id, JsonSerializer.Serialize x)))
returnIdandJson()
這打印
1 {"JsonValue":{"Tag":3,"IsString":false,"IsNumber":false,"IsFloat":false,"IsRecord":true,"IsArray":false,"IsBoolean":false,"IsNull":false,"_Pri:false,"IsNull":false,"_Print":"{\r\n \u0022id\u0022: 1,\r\n \u0022name\u0022: \u0022John\u0022\r\n}"}}
2 {"JsonValue":{"Tag":3,"IsString":false,"IsNumber":false,"IsFloat":false,"IsRecord":true,"IsArray":false,"IsBoolean":false,"IsNull":false,"_Pri:false,"IsNull":false,"_Print":"{\r\n \u0022id\u0022: 2,\r\n \u0022name\u0022: \u0022Paul\u0022\r\n}"}}
我想要的是
1 {"id":1, "name": "John"}
2 {"id":2, "name": "Paul"}
有沒有辦法可以從 JsonValue 訪問和序列化內部列表項?
謝謝
您可以通過.JsonValue
屬性訪問原始 JSON,該屬性存在於提供程序返回的每個對象上。 此屬性返回類型JsonValue
,您可以根據需要以編程方式對其進行分析(例如調用其Properties()
方法或類似方法),並且它還有一個簡單的ToString
實現,它只返回序列化的 JSON:
let printProduct (id:int, userJson: string) =
printfn "%i %s" id userJson
let returnIdandJson() =
data |> Seq.map(fun x-> (printProduct (x.Id, string x.JsonValue)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.