Изменения документа Newtonsoft. Json
Редактировал(а) Alexandr Fokin 2024/04/20 22:16
От версии 2.1
отредактировано Alexandr Fokin
на 2020/03/30 10:47
на 2020/03/30 10:47
Изменить комментарий:
Загрузить новое изображение newtonsoft.json. Иерархия.jpg
К версии 7.17
отредактировано Alexandr Fokin
на 2022/07/22 04:11
на 2022/07/22 04:11
Изменить комментарий:
Удаленный объект
Сводка
-
Свойства страницы (3 изменено, 0 добавлено, 0 удалено)
-
Вложения (0 изменено, 1 добавлено, 0 удалено)
-
Объекты (0 изменено, 0 добавлено, 2 удалено)
Подробности
- Свойства страницы
-
- Родительский документ
-
... ... @@ -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/
- newtonsoft.json. Иерархия.graphml
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.cccc1808 - Размер
-
... ... @@ -1,0 +1,1 @@ 1 +10.0 KB - Содержимое
-
... ... @@ -1,0 +1,162 @@ 1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 +<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd"> 3 + <!--Created by yEd 3.19.1.1--> 4 + <key attr.name="Description" attr.type="string" for="graph" id="d0"/> 5 + <key for="port" id="d1" yfiles.type="portgraphics"/> 6 + <key for="port" id="d2" yfiles.type="portgeometry"/> 7 + <key for="port" id="d3" yfiles.type="portuserdata"/> 8 + <key attr.name="url" attr.type="string" for="node" id="d4"/> 9 + <key attr.name="description" attr.type="string" for="node" id="d5"/> 10 + <key for="node" id="d6" yfiles.type="nodegraphics"/> 11 + <key for="graphml" id="d7" yfiles.type="resources"/> 12 + <key attr.name="url" attr.type="string" for="edge" id="d8"/> 13 + <key attr.name="description" attr.type="string" for="edge" id="d9"/> 14 + <key for="edge" id="d10" yfiles.type="edgegraphics"/> 15 + <graph edgedefault="directed" id="G"> 16 + <data key="d0"/> 17 + <node id="n0"> 18 + <data key="d5"/> 19 + <data key="d6"> 20 + <y:ShapeNode> 21 + <y:Geometry height="30.0" width="79.0" x="337.0" y="132.0"/> 22 + <y:Fill color="#FFCC00" transparent="false"/> 23 + <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 24 + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="21.1513671875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="53.013671875" x="12.9931640625" xml:space="preserve" y="4.42431640625">JToken<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 25 + <y:Shape type="ellipse"/> 26 + </y:ShapeNode> 27 + </data> 28 + </node> 29 + <node id="n1"> 30 + <data key="d5"/> 31 + <data key="d6"> 32 + <y:ShapeNode> 33 + <y:Geometry height="30.0" width="79.0" x="225.0" y="231.0"/> 34 + <y:Fill color="#FFCC00" transparent="false"/> 35 + <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 36 + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="21.1513671875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="77.1240234375" x="0.93798828125" xml:space="preserve" y="4.42431640625">JContainer<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 37 + <y:Shape type="ellipse"/> 38 + </y:ShapeNode> 39 + </data> 40 + </node> 41 + <node id="n2"> 42 + <data key="d5"/> 43 + <data key="d6"> 44 + <y:ShapeNode> 45 + <y:Geometry height="30.0" width="79.0" x="435.0" y="231.0"/> 46 + <y:Fill color="#FFCC00" transparent="false"/> 47 + <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 48 + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="21.1513671875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="49.1376953125" x="14.93115234375" xml:space="preserve" y="4.42431640625">JValue<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 49 + <y:Shape type="ellipse"/> 50 + </y:ShapeNode> 51 + </data> 52 + </node> 53 + <node id="n3"> 54 + <data key="d5"/> 55 + <data key="d6"> 56 + <y:ShapeNode> 57 + <y:Geometry height="30.0" width="79.0" x="228.25" y="310.0"/> 58 + <y:Fill color="#FFCC00" transparent="false"/> 59 + <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 60 + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="21.1513671875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="48.365234375" x="15.3173828125" xml:space="preserve" y="4.42431640625">JArray<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 61 + <y:Shape type="ellipse"/> 62 + </y:ShapeNode> 63 + </data> 64 + </node> 65 + <node id="n4"> 66 + <data key="d5"/> 67 + <data key="d6"> 68 + <y:ShapeNode> 69 + <y:Geometry height="30.0" width="79.0" x="337.0" y="310.0"/> 70 + <y:Fill color="#FFCC00" transparent="false"/> 71 + <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 72 + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="21.1513671875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="55.3515625" x="11.82421875" xml:space="preserve" y="4.42431640625">JObject<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 73 + <y:Shape type="ellipse"/> 74 + </y:ShapeNode> 75 + </data> 76 + </node> 77 + <node id="n5"> 78 + <data key="d5"/> 79 + <data key="d6"> 80 + <y:ShapeNode> 81 + <y:Geometry height="30.0" width="79.0" x="119.5" y="310.0"/> 82 + <y:Fill color="#FFCC00" transparent="false"/> 83 + <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/> 84 + <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="14" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="21.1513671875" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="69.3583984375" x="4.82080078125" xml:space="preserve" y="4.42431640625">JProperty<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel> 85 + <y:Shape type="ellipse"/> 86 + </y:ShapeNode> 87 + </data> 88 + </node> 89 + <edge id="e0" source="n0" target="n1"> 90 + <data key="d9"/> 91 + <data key="d10"> 92 + <y:PolyLineEdge> 93 + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 94 + <y:LineStyle color="#000000" type="line" width="1.0"/> 95 + <y:Arrows source="none" target="standard"/> 96 + <y:BendStyle smoothed="false"/> 97 + </y:PolyLineEdge> 98 + </data> 99 + </edge> 100 + <edge id="e1" source="n0" target="n2"> 101 + <data key="d9"/> 102 + <data key="d10"> 103 + <y:PolyLineEdge> 104 + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 105 + <y:LineStyle color="#000000" type="line" width="1.0"/> 106 + <y:Arrows source="none" target="standard"/> 107 + <y:BendStyle smoothed="false"/> 108 + </y:PolyLineEdge> 109 + </data> 110 + </edge> 111 + <edge id="e2" source="n1" target="n3"> 112 + <data key="d9"/> 113 + <data key="d10"> 114 + <y:PolyLineEdge> 115 + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 116 + <y:LineStyle color="#000000" type="line" width="1.0"/> 117 + <y:Arrows source="none" target="standard"/> 118 + <y:BendStyle smoothed="false"/> 119 + </y:PolyLineEdge> 120 + </data> 121 + </edge> 122 + <edge id="e3" source="n1" target="n4"> 123 + <data key="d9"/> 124 + <data key="d10"> 125 + <y:PolyLineEdge> 126 + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 127 + <y:LineStyle color="#000000" type="line" width="1.0"/> 128 + <y:Arrows source="none" target="standard"/> 129 + <y:BendStyle smoothed="false"/> 130 + </y:PolyLineEdge> 131 + </data> 132 + </edge> 133 + <edge id="e4" source="n1" target="n5"> 134 + <data key="d9"/> 135 + <data key="d10"> 136 + <y:PolyLineEdge> 137 + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/> 138 + <y:LineStyle color="#000000" type="line" width="1.0"/> 139 + <y:Arrows source="none" target="standard"/> 140 + <y:BendStyle smoothed="false"/> 141 + </y:PolyLineEdge> 142 + </data> 143 + </edge> 144 + <edge id="e5" source="n5" target="n0"> 145 + <data key="d9"/> 146 + <data key="d10"> 147 + <y:PolyLineEdge> 148 + <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"> 149 + <y:Point x="159.0" y="147.0"/> 150 + </y:Path> 151 + <y:LineStyle color="#000000" type="line" width="1.0"/> 152 + <y:Arrows source="none" target="standard"/> 153 + <y:BendStyle smoothed="false"/> 154 + </y:PolyLineEdge> 155 + </data> 156 + </edge> 157 + </graph> 158 + <data key="d7"> 159 + <y:Resources/> 160 + </data> 161 +</graphml> 162 +
- 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