[英]Remove fields from JSON with JSON.NET in F#
I have a record我有记录
type MyType = {
Name : string
Description : string
OtherField : string
}
I'd like to remove some of the fields before I serialize to JSON.在序列化为 JSON 之前,我想删除一些字段。 How can I do this?
我怎样才能做到这一点?
Let's assume you're starting with假设您从
let object = {
Name = "hi"
Description = "ho"
OtherField = "there"
}
#r "nuget:Newtonsoft.Json"
open Newtonsoft.Json
open Newtonsoft.Json.Linq
let json = JsonConvert.SerializeObject object
let fieldsToRemove = [|
"Name"
"OtherField"
|]
Here's a function that takes an object as input这是一个以 object 作为输入的 function
let removeFromObject (fields : string []) object =
let jToken = JToken.FromObject object
let allFields = jToken.Children() |> Seq.map (fun t -> t :?> JProperty)
let remainingFields = allFields |> Seq.filter (fun f -> Array.contains f.Name fields |> not)
let newObject = JObject remainingFields
let newJson = JsonConvert.SerializeObject(newObject, Formatting.Indented)
newJson
removeFromObject fieldsToRemove object
And here an adapter for taking a string这里有一个用于获取字符串的适配器
let removeFromString (fields : string []) json =
let jToken = JObject.Parse json :> JToken
removeFromObject fields jToken
removeFromString fieldsToRemove json
This was inspired by JSON.NET how to remove nodes这受到JSON.NET 如何删除节点的启发
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.