Изменения документа Newtonsoft. Json

Редактировал(а) Alexandr Fokin 2024/04/20 22:16

От версии 3.1
отредактировано Alexandr Fokin
на 2020/03/30 10:47
Изменить комментарий: Загрузить новое вложение newtonsoft.json. Иерархия.graphml
К версии 7.16
отредактировано Alexandr Fokin
на 2022/07/22 04:11
Изменить комментарий: Удаленный объект

Сводка

Подробности

Свойства страницы
Родительский документ
... ... @@ -1,1 +1,1 @@
1 -Разработка.NET.Библиотеки.WebHome
1 +Разработка.NET.Библиотеки.Документы.Сериализация.Json.WebHome
Теги
... ... @@ -1,1 +1,1 @@
1 -json|c#
1 +json|c#|jsonPath
Содержимое
... ... @@ -1,3 +1,17 @@
1 +Иерархия основных сущностей json в библиотеке.
2 +[[image:newtonsoft.json. Иерархия.jpg]]
1 1  
4 +
5 +Библиотека позволяет:
6 +1) Выполнят сериализацию/десереализацию классов
7 +2) Работать со структурой json документа, используя абстракции (JObject, JArray...)
8 +3) Делать запросы к структуре json используя язык JsonPath (SelectToken(query))
9 +
10 +Ссылки:
2 2  https://www.newtonsoft.com/json
3 3  https://www.nuget.org/packages/NewtonSoft.Json
13 +
14 +Querying JSON with complex JSON Path
15 +https://www.newtonsoft.com/json/help/html/QueryJsonSelectTokenJsonPath.htm
16 +JSONPath - XPath for JSON
17 +https://goessner.net/articles/JsonPath/
XWiki.XWikiComments[0]
Автор
... ... @@ -1,1 +1,0 @@
1 -XWiki.cccc1808
Комментарий
... ... @@ -1,7 +1,0 @@
1 -Возможна реализация собственной логики сериализации/десериализации для типа T и использование ее на уровне классов сущностей в виде атрибутов над свойством.
2 -(Например для Dictionary)
3 -
4 -Необходимо реализовать интерфейс JsonConverter или JsonConverter<T>
5 -И либо использовать атрибут [JsonConverter(typeof(ConverterImplementation))]
6 -либо задать JsonConverter в свойствах serializer.Converters.Add(new ConverterImplementation())
7 -Если свойства CanRead/CanWrite задать false, то будет использоваться реализация по умолчанию
Дата
... ... @@ -1,1 +1,0 @@
1 -2020-02-13 13:15:26.153
XWiki.XWikiComments[1]
Автор
... ... @@ -1,1 +1,0 @@
1 -XWiki.cccc1808
Комментарий
... ... @@ -1,4 +1,0 @@
1 -Сереализатор не может самостоятельно десереализовать абстрактный тип т.к. не знает какую реализацию стоит использовать. Возможное решение:
2 -1) Поместить исходную json строку в context объекта сериализатора. (Тем самым мы получим возможность обратиться к нему из JsonConverter)
3 -2) Создать реализацию JsonConverter, которая будет извлекать json строку из context и выполнять анализ, на основе которого можно было бы разрешить тип абстрактного класса. (используя либо анализ строки, либо анализ JObject, либо десереализацию части объекта)
4 -3) Навесить данный атрибут над свойством с абстрактным типом класса.
Дата
... ... @@ -1,1 +1,0 @@
1 -2020-02-23 22:12:11.817
XWiki.XWikiComments[4]
Автор
... ... @@ -1,0 +1,1 @@
1 +XWiki.cccc1808
Комментарий
... ... @@ -1,0 +1,4 @@
1 +Сериализация объектов с циклическими ссылками
2 +
3 +ReferenceLoopHandling
4 +https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_ReferenceLoopHandling.htm
Дата
... ... @@ -1,0 +1,1 @@
1 +2021-07-04 17:46:30.663