json - 在 F# 中使用 JSON.NET 从 JSON 中删除字段
问题描述
我有记录
type MyType = {
Name : string
Description : string
OtherField : string
}
我想在序列化为 JSON 之前删除一些字段。我怎样才能做到这一点?
解决方案
假设您从
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"
|]
这是一个将对象作为输入的函数
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
这里有一个用于获取字符串的适配器
let removeFromString (fields : string []) json =
let jToken = JObject.Parse json :> JToken
removeFromObject fields jToken
removeFromString fieldsToRemove json
推荐阅读
- c - 为什么在系统调用位上左移?
- swift - 无密码电子邮件身份验证 Firebase、动态链接 (FDL)
- java - 带有请求参数的 RestTemplate POST 请求
- redux - RXJS 6.x 中的 ImmutableJS 和 Redux Observable
- python - 更新熊猫中的整个excel行
- javascript - 如何根据选择自动完成输入?
- ios - iOS/Swift:尝试将协议方法添加到 UIView 的按钮告诉我我的方法没有暴露给目标 C
- http - Golang http.PostParam 未在响应中显示所有 Cookie
- android - 使用 Android Studio 将文件转换为字符串,然后转换为 Base64 Fromate
- javascript - 如何检测输入值何时随 JS/Jquery 动态变化