简体   繁体   English

使用 F# 中的 JSON.NET 从 JSON 中删除字段

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM