Как получить / десериализовать объект JsonPatchDocument? - PullRequest
0 голосов
/ 13 июня 2018

Я мог бы сериализовать модель 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 голосов
/ 13 июня 2018

Вам вовсе не нужно сериализовать объект JsonPatchDocument.Вы можете получить доступ к его свойствам непосредственно через объект.Например, фильтрация для свойства пути:

var elementsWithPath = patch.Operations.Where(o => o.path.Equals("some path"));
0 голосов
/ 13 июня 2018

Я думаю, вы можете что-то сделать с JTokens из пространства имен Newtonsoft.Json.Linq.Вы можете превратить строку pathserialized в JToken с помощью var jToken = JToken.Parse(pathSerializer), а затем исследовать базовые объекты и свойства, перечислив их с помощью var childTokens = jToken.Children().

Один из этих дочерних токенов будетJObject, который является представлением Json объекта.Вы можете получить доступ к свойствам JObject с помощью jObject["propertyName"].

...