簡體   English   中英

序列化內部 JsonValue

[英]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.

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