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();
能够将模型对象转为 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文件中,这里不再赘述。
下面这个是从官网直接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();
框架提供了对 Jobject 对象的Linq操作支持
using Newtonsoft.Json.Linq;
之后你可以像操作数组、集合或者Context一样方便。
本来想翻译一下的,英语太差,算了。在常用的类型前面加粗吧
Classes
ClassDescription
DefaultJsonNameTable
The default JSON name table implementation.
笔者在弄了一段时间的百度 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();