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

内容纲要

 Newtonsoft.Json

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

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

Json 转为 Model

将 Model 转为 Json

将 LINQ 转为 JSON

Linq 操作

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

另外附上 百度AI 文字识别 Json 及其模型类


 

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

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

{

"a":1

}

你的对象

public class Test
    {
        public int aa{get;set;}
    }

也是不能对应的。

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


 Json 转为 Model

 

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

把以下内容粘贴进去

{
  "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

    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 文件

            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 = JsonConvert.DeserializeObject<AccessTokenModel>(str); Console.WriteLine(a.access_token);    //随意输出一个属性 Console.ReadKey(); }

 重点方法 

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

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

集合

把Json文件改成以下的样子

[{
  "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"
}
]

 

            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<AccessTokenModel> a = JsonConvert.DeserializeObject<List<AccessTokenModel>>(str);
                foreach (var i in a)
                {
                    Console.WriteLine(i.access_token);
                }

                Console.ReadKey();
            }

 


将Model转为Json

能够将模型对象转为 Json。

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

            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 = JsonConvert.SerializeObject(accessTokenModel);    //转为字符串

                Console.WriteLine(str);
                Console.ReadKey();
            }

重点方法 

JsonConvert.SerializeObject(a模型对象);

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


将 LINQ 转为 JSON

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

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

            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操作支持

using Newtonsoft.Json.Linq;

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

 


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

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

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

 

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

Represents a reader that provides JsonSchema validation.

《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 Caution
JSON Schema validation has been moved to its own package. See https://www.newtonsoft.com/jsonschemafor more details.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 JsonWriter
Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 JsonWriterException
The exception thrown when an error occurs while writing JSON text.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》Interfaces
  Interface Description
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 IArrayPool<T>
Provides an interface for using pooled arrays.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 IJsonLineInfo
Provides an interface to enable a class to return line and position information.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》Enumerations
  Enumeration Description
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 ConstructorHandling
Specifies how constructors are used when initializing objects during deserialization by the JsonSerializer.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 DateFormatHandling
Specifies how dates are formatted when writing JSON text.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 DateParseHandling
Specifies how date formatted strings, e.g. “\/Date(1198908717056)\/” and “2012-03-21T05:40Z”, are parsed when reading JSON text.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 DateTimeZoneHandling
Specifies how to treat the time value when converting between string and DateTime.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 DefaultValueHandling
Specifies default value handling options for the JsonSerializer.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 FloatFormatHandling
Specifies float format handling options when writing special floating point numbers, e.g. NaN,PositiveInfinity and NegativeInfinity with JsonWriter.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 FloatParseHandling
Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 Formatting
Specifies formatting options for the JsonTextWriter.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 JsonReader.State
Specifies the state of the reader.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 JsonToken
Specifies the type of JSON token.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 MemberSerialization
Specifies the member serialization options for the JsonSerializer.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 MetadataPropertyHandling
Specifies metadata property handling options for the JsonSerializer.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 MissingMemberHandling
Specifies missing member handling options for the JsonSerializer.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 NullValueHandling
Specifies null value handling options for the JsonSerializer.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 ObjectCreationHandling
Specifies how object creation is handled by the JsonSerializer.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 PreserveReferencesHandling
Specifies reference handling options for the JsonSerializer. Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 ReferenceLoopHandling
Specifies reference loop handling options for the JsonSerializer.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 Required
Indicating whether a property is required.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 StringEscapeHandling
Specifies how strings are escaped when writing JSON text.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 TypeNameAssemblyFormatHandling
Indicates the method that will be used during deserialization for locating and loading assemblies.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 TypeNameHandling
Specifies type name handling options for the JsonSerializer.
《Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全》 WriteState
Specifies the state of the JsonWriter.
 


另外附上 百度AI 文字识别 Json 及其模型类

 图片

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

笔者在弄了一段时间的百度 Ai 平台的SDK,封装了OCR SDK,由于现在在找实习工作,所以有部分没有弄完,有兴趣可以添加笔者的微信免费获取。微信在右侧导航栏。

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

{
  "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

    /// <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; }
        }
    }
}

可用控制台进行检验

 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();

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注