{转}Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全

Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 Newtonsoft.Json

Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就不多说了,笔者最近在弄接口,需要操作Json。

以某个云计算平台的Token为例,边操作边讲解。

Json 转为 Model 将 Model 转为 Json 将 LINQ 转为 JSON Linq 操作 命名空间、类型、方法大全 另外附上 百度AI 文字识别 Json 及其模型类

\

Newtonsoft.Json 将字符串转为对象,是根据类型对象名称进行的,大小写不分,但是名称要一致要,哪怕你的json只有一个

1
2
3
4
5
{
 
"a":1
 
}

你的对象

1
2
3
4
public class Test
    {
        public int aa{get;set;}
    }

也是不能对应的。

有复杂层次的 json,可以使用 “类中类” 来映射,要注意 List/Array/ArrayList的类型的使用。

Json 转为 Model

新建一个Json文件,名字随意,例如 json1.json

把以下内容粘贴进去

1
2
3
4
5
6
7
8
{
  "refresh_token": "25.ea2f85ebd48df85fe5400000.18640.282335-15533349",
  "expires_in": 2592010,
  "session_key": "9mzdWr3n8ncMeDgX8zjhkhlW8khb5cdZtPevPbPwQGBg==",
  "access_token": "24.ac0ca9fakhlkyhl552017858.282335-15533349",
  "scope": "audio_voice_assistant_get audio_tts_post public vis-ocr_ocr nlp_simnet nlp_wclassify_watermark brain_ocr_scope vis-classify_car brain_gif_antiporn brain_ocr_general brain_ocr_general_basic brain_ocr_generer vis-classify_animal brain_politician brain_unit_utterance brain_imgquality_general brain_nlp_simnet brain_nlp_depparser vis-classify_plant brain_solution brain_ocr_plate_number brain_nlp_wordembedding brain_nlp_dnnlm_cn_legacy brain_nlp_simnet_legacy brain_nlp_commain_animal_classify brain_plant_classify brain_solution_iocr brain_realtime_product brain_nlp_lexer_custom brain_kgbody_analysis brain_body_attr brain_ocr_vat_invoice brain_advanced_general_classify brain_numbers brain_body_number vis-faceverify_FACE_auth_sessionkey smartapp_swanid_verify smartapp_opensource_openapi",
  "session_secret": "2ca66d464545c77a4767f709873be4"
}

定义一个模型,文件名为AccessTokenModel.cs

1
2
3
4
5
6
7
8
9
public class AccessTokenModel
{
    public string refresh_token { get; set; }
    public string expires_in { get; set; }//: Access Token的有效期(秒为单位,一般为1个月)
    public string scope { get; set; }
    public string session_key { get; set; }
    public string access_token { get; set; }//: 要获取的Access Token
    public string session_secret { get; set; }
}

打开Program.cs 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  public static void Main(string[] args)
  {
      FileStream fs = new FileStream(@"请修改成你的文件路径\json1.json", FileMode.Open);
      StreamReader fileStream = new StreamReader(fs);
      string str = "";
      string line;
      while ((line = fileStream.ReadLine()) != null)
      {
          str += line;
      }
//上面的代码没有意义,只是将Json文件的内容加载到字符串中
 
      JObject jObject = new JObject();        //新建 操作对象
      AccessTokenModel a = <strong>JsonConvert.DeserializeObject</strong>(str);
 
      Console.WriteLine(<strong>a.access_token</strong>);    //随意输出一个属性
      Console.ReadKey();
  }

重点方法

1
2
<strong>JsonConvert.DeserializeObject<要转化的模型类>("字符串对象");
</strong>

之后可以很方便的把Json文件的内容存放到数据库中。

集合

把Json文件改成以下的样子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[{
  "refresh_token": "25.ea2f85ebd48df85fe5400000.18640.282335-15533349",
  "expires_in": 2592010,
  "session_key": "9mzdWr3n8ncMeDgX8zjhkhlW8khb5cdZtPevPbPwQGBg==",
  "access_token": "24.ac0ca9fakhlkyhl552017858.282335-15533349",
  "scope": "audio_voice_assistant_get audio_tts_post public vis-ocr_ocr nlp_simnet nlp_wclassify_watermark brain_ocr_scope vis-classify_car brain_gif_antiporn brain_ocr_general brain_ocr_general_basic brain_ocr_generer vis-classify_animal brain_politician brain_unit_utterance brain_imgquality_general brain_nlp_simnet brain_nlp_depparser vis-classify_plant brain_solution brain_ocr_plate_number brain_nlp_wordembedding brain_nlp_dnnlm_cn_legacy brain_nlp_simnet_legacy brain_nlp_commain_animal_classify brain_plant_classify brain_solution_iocr brain_realtime_product brain_nlp_lexer_custom brain_kgbody_analysis brain_body_attr brain_ocr_vat_invoice brain_advanced_general_classify brain_numbers brain_body_number vis-faceverify_FACE_auth_sessionkey smartapp_swanid_verify smartapp_opensource_openapi",
  "session_secret": "2ca66d464545c77a4767f709873be4"
},
{
  "refresh_token": "25.ea2f85ebd48df85fe5400000.18640.282335-15533349",
  "expires_in": 2592010,
  "session_key": "9mzdWr3n8ncMeDgX8zjhkhlW8khb5cdZtPevPbPwQGBg==",
  "access_token": "24.ac0ca9fakhlkyhl552017858.282335-15533349",
  "scope": "audio_voice_assistant_get audio_tts_post public vis-ocr_ocr nlp_simnet nlp_wclassify_watermark brain_ocr_scope vis-classify_car brain_gif_antiporn brain_ocr_general brain_ocr_general_basic brain_ocr_generer vis-classify_animal brain_politician brain_unit_utterance brain_imgquality_general brain_nlp_simnet brain_nlp_depparser vis-classify_plant brain_solution brain_ocr_plate_number brain_nlp_wordembedding brain_nlp_dnnlm_cn_legacy brain_nlp_simnet_legacy brain_nlp_commain_animal_classify brain_plant_classify brain_solution_iocr brain_realtime_product brain_nlp_lexer_custom brain_kgbody_analysis brain_body_attr brain_ocr_vat_invoice brain_advanced_general_classify brain_numbers brain_body_number vis-faceverify_FACE_auth_sessionkey smartapp_swanid_verify smartapp_opensource_openapi",
  "session_secret": "2ca66d464545c77a4767f709873be4"
}
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public static void Main(string[] args)
{
    FileStream fs = new FileStream(@"请修改成你的文件路径\json1.json", FileMode.Open);
    StreamReader fileStream = new StreamReader(fs);
    string str = "";
    string line;
    while ((line = fileStream.ReadLine()) != null)
    {
        str += line;
    }
    //上面的代码没有意义,只是将Json文件的内容加载到字符串中
 
    JObject jObject = new JObject();        //新建 操作对象
    List a = JsonConvert.DeserializeObject<list>(str);
    foreach (var i in a)
    {
        Console.WriteLine(i.access_token);
    }
 
    Console.ReadKey();
}</list>

将Model转为Json

能够将模型对象转为 Json。

继续使用上面的AccessTokenModel.cs 文件,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void Main(string[] args)
{
    AccessTokenModel accessTokenModel = new AccessTokenModel();
    accessTokenModel.access_token = "test1";
    accessTokenModel.expires_in = "test2";
    accessTokenModel.refresh_token = "test3";
    accessTokenModel.scope = "test4";
    accessTokenModel.session_key = "test5";
    accessTokenModel.session_secret = "test6";
 
    JObject jObject = new JObject();
    string str =<strong> JsonConvert.SerializeObject(accessTokenModel)</strong>;    //转为字符串
 
    Console.WriteLine(str);
    Console.ReadKey();
}

重点方法

1
2
3
<strong>JsonConvert.SerializeObject(a模型对象);
 
</strong>

运行后可以看到控制台输出的是Json字符串了,你可以继续把他放到Json文件中,这里不再赘述。

将 LINQ 转为 JSON

下面这个是从官网直接copy的例子,Jarray 是其框架提供的一种类型。

在控制台运行后会发现输出的字符是已经格式化的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void Main(string[] args)
{
    JArray array = new JArray();
    array.Add("Manual text");
    array.Add(new DateTime(2000, 5, 23));
 
    JObject o = new JObject();
    o["MyArray"] = array;
 
    string json = o.ToString();
    // {
    //   "MyArray": [
    //     "Manual text",
    //     "2000-05-23T00:00:00"
    //   ]
    // }
 
    Console.WriteLine(json);
    Console.ReadKey();

Linq 操作

框架提供了对 Jobject 对象的Linq操作支持

1
using Newtonsoft.Json.Linq;

之后你可以像操作数组、集合或者Context一样方便。

命名空间、类型、方法大全

 

本来想翻译一下的,英语太差,算了。在常用的类型前面加粗吧

Classes ClassDescription Public class DefaultJsonNameTable The default JSON name table implementation. Public class JsonArrayAttribute Instructs theJsonSerializerhow to serialize the collection. Public class JsonConstructorAttribute Instructs theJsonSerializerto use the specified constructor when deserializing that object. Public class JsonContainerAttribute Instructs theJsonSerializerhow to serialize the object. Public classCode example JsonConvert 提供用于在.NET 和 Json之间互相转等操作的方法 Public class JsonConverter Converts an object to and from JSON. Public class JsonConverter Converts an object to and from JSON. Public class JsonConverterAttribute Instructs theJsonSerializerto use the specifiedJsonConverterwhen serializing the member or class. Public class JsonConverterCollection Represents a collection ofJsonConverter. Public class JsonDictionaryAttribute Instructs theJsonSerializerhow to serialize the collection. Public class JsonException JSON序列化或反序列化过程中发生错误时引发的异常类型 Public class JsonExtensionDataAttribute Instructs theJsonSerializerto deserialize properties with no matching class member into the specified collection and write values during serialization. Public class JsonIgnoreAttribute Instructs theJsonSerializernot to serialize the public field or public read/write property value. Public class JsonNameTable Base class for a table of atomized string objects. Public class JsonObjectAttribute Instructs theJsonSerializerhow to serialize the object. Public class JsonPropertyAttribute Instructs theJsonSerializerto always serialize the member with the specified name. Public class JsonReader Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. Public class JsonReaderException The exception thrown when an error occurs while reading JSON text. Public class JsonRequiredAttribute Instructs theJsonSerializerto always serialize the member, and to require that the member has a value. Public class JsonSerializationException The exception thrown when an error occurs during JSON serialization or deserialization. Public class JsonSerializer Serializes and deserializes objects into and from the JSON format. TheJsonSerializerenables you to control how objects are encoded into JSON. Public class JsonSerializerSettings Specifies the settings on aJsonSerializerobject. Public class JsonTextReader Represents a reader that provides fast, non-cached, forward-only access to JSON text data. Public class JsonTextWriter Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. Public class JsonValidatingReader Obsolete.

Represents a reader that providesJsonSchemavalidation.

Caution noteCaution JSON Schema validation has been moved to its own package. Seehttps://www.newtonsoft.com/jsonschemafor more details. Public class JsonWriter Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. Public class JsonWriterException The exception thrown when an error occurs while writing JSON text. \Interfaces InterfaceDescription Public interface IArrayPool Provides an interface for using pooled arrays. Public interface IJsonLineInfo Provides an interface to enable a class to return line and position information. \Enumerations EnumerationDescription Public enumeration ConstructorHandling Specifies how constructors are used when initializing objects during deserialization by theJsonSerializer. Public enumeration DateFormatHandling Specifies how dates are formatted when writing JSON text. Public enumeration DateParseHandling Specifies how date formatted strings, e.g."\/Date(1198908717056)\/"and"2012-03-21T05:40Z", are parsed when reading JSON text. Public enumeration DateTimeZoneHandling Specifies how to treat the time value when converting between string andDateTime. Public enumerationCode example DefaultValueHandling Specifies default value handling options for theJsonSerializer. Public enumeration FloatFormatHandling Specifies float format handling options when writing special floating point numbers, e.g.NaN,PositiveInfinityandNegativeInfinitywithJsonWriter. Public enumeration FloatParseHandling Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. Public enumeration Formatting Specifies formatting options for theJsonTextWriter. Protected enumeration JsonReader.State Specifies the state of the reader. Public enumeration JsonToken Specifies the type of JSON token. Public enumeration MemberSerialization Specifies the member serialization options for theJsonSerializer. Public enumeration MetadataPropertyHandling Specifies metadata property handling options for theJsonSerializer. Public enumeration MissingMemberHandling Specifies missing member handling options for theJsonSerializer. Public enumerationCode example NullValueHandling Specifies null value handling options for theJsonSerializer. Public enumeration ObjectCreationHandling Specifies how object creation is handled by theJsonSerializer. Public enumerationCode example PreserveReferencesHandling Specifies reference handling options for theJsonSerializer. Note that references cannot be preserved when a value is set via a non-default constructor such as types that implementISerializable. Public enumeration ReferenceLoopHandling Specifies reference loop handling options for theJsonSerializer. Public enumeration Required Indicating whether a property is required. Public enumeration StringEscapeHandling Specifies how strings are escaped when writing JSON text. Public enumeration TypeNameAssemblyFormatHandling Indicates the method that will be used during deserialization for locating and loading assemblies. Public enumeration TypeNameHandling Specifies type name handling options for theJsonSerializer. Public enumeration WriteState Specifies the state of theJsonWriter. 另外附上 百度AI 文字识别 Json 及其模型类

图片

 

百度AI 识别文字,返回Json结果, 名字随意.格式建议为 json,如果使用记事本保存,注意编码格式是 utf-8,因为c# string默认为utf8,不然会乱码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
{
  "log_id": 3413661945235258919,
  "direction": 0,
  "words_result_num": 2,
  "words_result": [
    {
      "vertexes_location": [
        {
          "y": 81,
          "x": 51
        },
        {
          "y": 81,
          "x": 151
        },
        {
          "y": 103,
          "x": 151
        },
        {
          "y": 103,
          "x": 51
        }
      ],
      "probability": {
        "variance": 0.0,
        "average": 0.999861,
        "min": 0.999627
      },
      "chars": [
        {
          "char": "今",
          "location": {
            "width": 17,
            "top": 83,
            "left": 60,
            "height": 20
          }
        },
        {
          "char": "天",
          "location": {
            "width": 17,
            "top": 83,
            "left": 78,
            "height": 20
          }
        },
        {
          "char": "除",
          "location": {
            "width": 12,
            "top": 83,
            "left": 103,
            "height": 20
          }
        },
        {
          "char": "了",
          "location": {
            "width": 16,
            "top": 83,
            "left": 116,
            "height": 20
          }
        },
        {
          "char": "皮",
          "location": {
            "width": 13,
            "top": 83,
            "left": 140,
            "height": 20
          }
        }
      ],
      "min_finegrained_vertexes_location": [
        {
          "y": 81,
          "x": 51
        },
        {
          "y": 81,
          "x": 151
        },
        {
          "y": 103,
          "x": 151
        },
        {
          "y": 103,
          "x": 51
        }
      ],
      "finegrained_vertexes_location": [
        {
          "y": 81,
          "x": 51
        },
        {
          "y": 81,
          "x": 71
        },
        {
          "y": 81,
          "x": 90
        },
        {
          "y": 81,
          "x": 110
        },
        {
          "y": 81,
          "x": 129
        },
        {
          "y": 81,
          "x": 149
        },
        {
          "y": 81,
          "x": 151
        },
        {
          "y": 91,
          "x": 151
        },
        {
          "y": 100,
          "x": 151
        },
        {
          "y": 103,
          "x": 151
        },
        {
          "y": 103,
          "x": 132
        },
        {
          "y": 103,
          "x": 112
        },
        {
          "y": 103,
          "x": 93
        },
        {
          "y": 103,
          "x": 73
        },
        {
          "y": 103,
          "x": 54
        },
        {
          "y": 103,
          "x": 51
        },
        {
          "y": 93,
          "x": 51
        },
        {
          "y": 84,
          "x": 51
        }
      ],
      "location": {
        "width": 102,
        "top": 81,
        "left": 51,
        "height": 24
      },
      "words": "今天除了皮"
    },
    {
      "vertexes_location": [
        {
          "y": 109,
          "x": 52
        },
        {
          "y": 109,
          "x": 152
        },
        {
          "y": 130,
          "x": 152
        },
        {
          "y": 130,
          "x": 52
        }
      ],
      "probability": {
        "variance": 8E-05,
        "average": 0.9907,
        "min": 0.973259
      },
      "chars": [
        {
          "char": "又",
          "location": {
            "width": 16,
            "top": 111,
            "left": 61,
            "height": 20
          }
        },
        {
          "char": "啥",
          "location": {
            "width": 12,
            "top": 111,
            "left": 85,
            "height": 20
          }
        },
        {
          "char": "也",
          "location": {
            "width": 16,
            "top": 111,
            "left": 98,
            "height": 20
          }
        },
        {
          "char": "没",
          "location": {
            "width": 15,
            "top": 111,
            "left": 123,
            "height": 20
          }
        },
        {
          "char": "干",
          "location": {
            "width": 13,
            "top": 111,
            "left": 141,
            "height": 20
          }
        }
      ],
      "min_finegrained_vertexes_location": [
        {
          "y": 109,
          "x": 52
        },
        {
          "y": 109,
          "x": 152
        },
        {
          "y": 130,
          "x": 152
        },
        {
          "y": 130,
          "x": 52
        }
      ],
      "finegrained_vertexes_location": [
        {
          "y": 109,
          "x": 52
        },
        {
          "y": 109,
          "x": 71
        },
        {
          "y": 109,
          "x": 91
        },
        {
          "y": 109,
          "x": 110
        },
        {
          "y": 109,
          "x": 129
        },
        {
          "y": 109,
          "x": 149
        },
        {
          "y": 109,
          "x": 152
        },
        {
          "y": 119,
          "x": 152
        },
        {
          "y": 129,
          "x": 152
        },
        {
          "y": 130,
          "x": 152
        },
        {
          "y": 130,
          "x": 133
        },
        {
          "y": 130,
          "x": 113
        },
        {
          "y": 130,
          "x": 94
        },
        {
          "y": 130,
          "x": 74
        },
        {
          "y": 130,
          "x": 55
        },
        {
          "y": 130,
          "x": 52
        },
        {
          "y": 121,
          "x": 52
        },
        {
          "y": 111,
          "x": 52
        }
      ],
      "location": {
        "width": 102,
        "top": 109,
        "left": 52,
        "height": 22
      },
      "words": "又啥也没干"
    }
  ],
  "language": -1
}

对应的模型 ,将 cs 文件,名字GeneralModel.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
    /// <summary>
    /// 通用文字识别(含位置版)返回结果
    /// </summary>
    public class GeneralModel
    {
        /// <summary>
        /// 必选
        /// 唯一的log id,用于问题定位
        /// </summary>
        public long log_id { get; set; }
        /// <summary>
        /// 图像方向,当detect_direction=true时存在。
        /// 非必选
        ///- -1:未定义,
        ///- 0:正向,
        ///- 1: 逆时针90度,
        ///- 2:逆时针180度,
        ///- 3:逆时针270度
        /// </summary>
        public int direction { get; set; }
 
        /// <summary>
        /// 必选
        /// 识别结果数,表示words_result的元素个数
        /// </summary>
        public int words_result_num { get; set; }
 
        /// <summary>
        /// 检测语言 默认值会返回 -1
        /// </summary>
        public string language { get; set; }
        /// <summary>
        /// 定位和识别文字结果数组
        /// </summary>
        public List<words_result> words_result { get; set; }
 
        public class Words_result
        {
            /// <summary>
            /// 图片中文字段四个顶点位置(矩形范围)
            /// </summary>
            public List<xy> vertexes_Location { get; set; }
            /// <summary>
            /// 可选
            /// 行置信度信息;如果输入参数 probability = true 则输出
            /// </summary>
            public Probability probability { get; set; }
            /// <summary>
            /// 每个字
            /// </summary>
            public List<chars> chars { get; set; }
            /// <summary>
            /// 最小细粒度顶点坐标
            /// </summary>
            public List<xy> min_finegrained_vertexes_location { get; set; }
            /// <summary>
            /// 细粒度顶点坐标,多边形
            /// </summary>
            public List<xy> finegrained_vertexes_location { get; set; }
            /// <summary>
            /// 文字在图片中的相对位置
            /// </summary>
            public Location location { get; set; }
            /// <summary>
            /// 识别出的文字
            /// </summary>
            public string words { get; set; }
            /// <summary>
            /// 坐标
            /// </summary>
            public class XY
            {
                public int x { get; set; }
                public int y { get; set; }
            }
            /// <summary>
            /// 行置信度
            /// </summary>
            public class Probability
            {
                /// <summary>
                /// 行置信度平均值方差
                /// </summary>
                public double variance { get; set; }
                /// <summary>
                /// 行置信度平均值
                /// </summary>
                public double average { get; set; }
 
                /// <summary>
                /// 行置信度最小值
                /// </summary>
                public double min { get; set; }
            }
            /// <summary>
            /// 单个文字
            /// </summary>
            public class Chars
            {
                /// <summary>
                /// 识别的单个文字
                /// </summary>
                public char chaR { get; set; }
                /// <summary>
                /// 该文字范围(矩形)
                /// </summary>
                public Location location { get; set; }
            }
        }
        public class Location
        {
            public int left { get; set; }
            public int top { get; set; }
            public int width { get; set; }
            public int height { get; set; }
        }
    }
}</xy></xy></chars></xy></words_result>

可用控制台进行检验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
static void Main(string[] args)
       {
           StreamReader streamReader = new StreamReader(System.IO.File.OpenRead(@"json文件位置"));
           string str = "";
           string jsonstr;
           while ((jsonstr = streamReader.ReadLine()) != null)
           {
               str += jsonstr;
           }
 
           GeneralModel generalModel = JsonConvert.DeserializeObject<generalmodel>(str);
 
           Console.WriteLine("图片id:" + generalModel.log_id);
           Console.WriteLine("图像方向:" + generalModel.direction);
           Console.WriteLine("检测语言为:" + generalModel.language);
           Console.WriteLine("有几个结果:" + generalModel.words_result_num);
 
           foreach (var item in generalModel.words_result)
           {
 
               Console.WriteLine("识别结果:" + Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(item.words)));
               foreach (var itemi in item.vertexes_Location)
               {
                   Console.WriteLine("{x:" + itemi.x + ";y:" + itemi.y + "}");
               }
               Console.WriteLine("Probability:可信度:" + "行置信度平均值" + item.probability.average + ";行置信度平均值方差:" + item.probability.variance + ";行置信度平均值最小值:" + item.probability.min);
               foreach (var itemi in item.chars)
               {
                   Console.WriteLine(itemi.chaR);
                   Console.WriteLine("位置:  left:" + itemi.location.left + ";  height: " + itemi.location.height + "top: " + itemi.location.top + "; width: " + itemi.location.width);
               }
           }
 
           Console.ReadKey();</generalmodel>
posted @ 2019-11-21 09:58  Net-Spider  阅读(958)  评论(0)    收藏  举报