asp.net - 如何获取/反序列化 JsonPatchDocument 对象?

asp.net - How to get / deserialize object of JsonPatchDocument?

我可以使用JsonConvert.SerializeObject()序列化JsonPatchDocument模型,但是结果类型是字符串,如何将其转换为普通数组类型?或者如何将 JsonPatchDocument 对象直接放入数组?

var pathSerialized = JsonConvert.SerializeObject(patch);
Console.WriteLine(pathSerialized);

// Result as string: 
// "[{"value":"2018-08-30","path":"/openTo","op":"replace"},{"value":"2018-04-01","path":"/openFrom","op":"replace"}]" 

我认为您可能希望使用 Newtonsoft.Json.Linq 命名空间中的 JTokens 做一些事情。您可以使用 var jToken = JToken.Parse(pathSerializer)pathserialized 字符串转换为 JToken,然后通过使用 var childTokens = jToken.Children().

枚举它们来探索底层对象和属性

其中一个子标记将成为 JObject,它是对象的 Json 表示。您可以使用 jObject["propertyName"].

访问 JObject 的属性

您根本不必序列化 JsonPatchDocument 对象。您可以直接通过对象访问其属性。例如过滤路径 属性:

var elementsWithPath = patch.Operations.Where(o => o.path.Equals("some path"));