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

时间:2018-06-13 12:46:02

标签: c# asp.net-core json-patch

我可以使用JsonPatchDocument序列化JsonConvert.SerializeObject()模型,但结果类型是字符串,如何将其转换为普通数组类型?或者如何将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"}]" 

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

我认为您可能希望从Newtonsoft.Json.Linq命名空间中使用JTokens执行某些操作。您可以将pathserialized字符串转换为JToken var jToken = JToken.Parse(pathSerializer),然后通过使用var childTokens = jToken.Children()枚举它们来探索基础对象和属性。

其中一个子令牌将是JObject,它是对象的Json表示。您可以使用JObject访问jObject["propertyName"]的媒体资源。