1. var
  2. h,i: integer;
  3. ss, url: string;
  4. mem: TMemoryStream;
  5. str1: tstringlist;
  6. memstr: TStringStream;
  7. iddec: TIdEncoderMIME;
  8. JSONObject,JSONObject2: TJSONObject; // JSON类
  9. jsonArray: TJSONArray; // JSON数组变量
  10. temp: string; // 临时使用变量
  11. begin
  12. token := '24.49a7c8acdbf69413ce0f998ad39a7a3d.2592000.1548050649.282335-9533039'; //图片获取的token
  13. if token = '' then
  14. Application.MessageBox('请输入token', '提示', MB_OK + MB_ICONINFORMATION + MB_TOPMOST)
  15. else if cxImage1.Picture.Width = then
  16. Application.MessageBox('请先载入图片', '提示', MB_OK + MB_ICONSTOP + MB_TOPMOST)
  17. else
  18. begin
  19. iddec := TIdEncoderMIME.Create;
  20. screen.Cursor := crhourglass;
  21. // ssl.SSLOptions.Method:= sslvSSLv3;
  22. memstr := TStringStream.Create;
  23. mem := TMemoryStream.Create;
  24. str1 := tstringlist.Create;
  25. try
  26. cxImage1.Picture.SaveToStream(mem);
  27. mem.Position := ;
  28. ss := iddec.Encode(mem); // *******
  29. mem.Free; //提交
  30. str1.Add('image=' + URLEncode(ss));
  31. url := 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token=';
  32. // https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=
  33. // https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic ?access_token=
  34. url := url + token;
  35.  
  36. RESTRequest1.AddParameter('image', ss); //传送一个图片的流
  37. RESTClient1.BaseURL := url;
  38. restrequest1.Execute;
  39. ss := RESTResponse1.Content; //获取返回值
  40. finally
  41.  
  42. memstr.Free;
  43. str1.Free;
  44. iddec.Free;
  45. screen.Cursor := crdefault;
  46. end;
  47. JSONObject := nil;
  48. JSONObject:=TJSONObject.ParseJSONValue(Trim(ss)) as TJSONObject;
  49. if JSONObject.Count > then
  50. begin
  51. { 1,遍历JSON数据 }
  52. mmo2.Lines.Add('遍历JSON数据:' + ##);
  53. mmo2.Lines.Add('JSON数据数量:' + IntToStr(JSONObject.Count));
  54. for i := to JSONObject.Count - do
  55. begin
  56. if i = then
  57. begin
  58. temp := JSONObject.Get(i).ToString + ##;;
  59. end
  60. else
  61. begin
  62. temp := temp + JSONObject.Get(i).ToString + ##;
  63. end;
  64. end;
  65. mmo2.Lines.Add(temp);
  66. temp := 'words = ' + JSONObject.Values['words_result'].ToString + ##;
  67. jsonArray := TJSONArray(JSONObject.GetValue('words_result'));
  68. if jsonArray.Count > then
  69. begin
  70. // 得到JSON数组字符串
  71. temp := 'other = ' + JSONObject.GetValue('words_result').ToString + ##;
  72.  
  73. // 循环取得JSON数组中每个元素
  74. for i := to jsonArray.Size - do
  75. begin
  76. JSONObject2:=TJSONObject.ParseJSONValue(Trim(jsonArray.Items[i].ToString)) as TJSONObject;
  77. temp := temp + IntToStr(i + ) + ' : ' + JSONObject2.Values['words'].ToString + ##;
  78. end;
  79. end;
  80. Mmo2.Lines.Add(temp);
  81. end;
  82.  
  83. // mmo2.Lines.Add(SJson.GetValue('words').ToString);
  84. h := pos('words":', ss);
  85. if h > then
  86. begin
  87. while h > do
  88. begin
  89. delete(ss, , h + );
  90. delete(ss, , pos('"', ss));
  91. mmo1.Lines.Add(copy(ss, , pos('"', ss) - ));
  92. h := pos('words":', ss);
  93. end;
  94. end
  95. else
  96. mmo1.Lines.Add(ss);
  97.  
  98. end;
  99. end;

百度获取图片 json格式解析的更多相关文章

  1. plist文件、NSUserDefault 对文件进行存储的类、json格式解析

    ========================== 文件操作 ========================== Δ一 .plist文件 .plist文件是一个属性字典数组的一个文件: .plis ...

  2. JSON格式解析和libjson使用简介(关于cjson的使用示例)

    JSON格式解析和libjson使用简介 在阅读本文之前,请先阅读下<Rss Reader实例开发之系统设计>一文. Rss Reader实例开发中,进行网络数据交换时主要使用到了两种数据 ...

  3. html中通过js获取接口JSON格式数据解析以及跨域问题

    前言:本人自学前端开发,一直想研究下js获取接口数据在html的实现,顺利地找到了获取数据的方法,但是有部分接口在调用中出现无法展示数据.经查,发现时跨域的问题,花费了一通时间,随笔记录下过程,以方便 ...

  4. 几种不同的json格式解析

    转连接: http://blog.csdn.net/whx405831799/article/details/42171191 内容很好 给服务端发送请求后,服务端会返回一连串的数据,这些数据在大部分 ...

  5. javascript json格式解析方法

    json.parse用于从一个字符串中解析出json对象 stringify()用于从一个对象解析出字符串 var dataObj = eval("("+json+")& ...

  6. java获取本地json格式的内容

    前言 该功能模块基于springBoot,自己在开发中遇到相关功能开发,总结如写: 1.首先将所需要获取的json文件放在项目resource目录下: 2.所需要的pom依赖: <depende ...

  7. jq获取后台json并解析

    参考: $(function () { $.ajax({ url: 'tsconfig.json', type: 'GET', dataType: 'json', timeout: 1000, cac ...

  8. 前端 ajax 获取后台json数据 解析

    先贴代码 function edit(node) { ).text(); alert(customerid) $.ajax({ type: "post", url: "/ ...

  9. 8. js中json格式解析

    var doc = O_PARAMETER.FJSonStr;(doc为:{"items":[],"nextId":0}) //1.先转为json对象,主要有以 ...

随机推荐

  1. java 大数运算[转]

    用JAVA 实现算术表达式(1234324234324 + 8938459043545)/5 + 343434343432.59845 因为JAVA语言中的long 定义的变量值的最大数受到限制,例如 ...

  2. c# 枚举安卓系统中所有目录及文件名

    using Android.App; using Android.Widget; using Android.OS; using System.Runtime.InteropServices; nam ...

  3. 如何实现从Java入门到服务端项目开发的进阶?

    对于打算入门或者刚刚入门学习Java的人来说,刚开始接触这门学科,往往会觉得不知所措,也会觉得很迷茫.结合前人经验,就从入门到进阶对于Java的学习而言,应该对于学习时间.目标和内容规划有一个清晰的定 ...

  4. Zuul网关总结

    Zuul是Netflix开源的网关服务(gateway service)(https://github.com/Netflix/zuul),提供动态路由.监控.弹性.安全性等功能.最近在公司的项目中用 ...

  5. 分布式事务(二)Java事务API(JTA)规范

    一.引子 既然出现了分布式场景(DTP模型), 大java也及时制定出一套规范来给各大应用服务器.数据库/mq等厂商使用,以方便管理互通--->JTA闪亮登场.JTA(Java Transact ...

  6. Spark编程指南分享

    转载自:https://www.2cto.com/kf/201604/497083.html 1.概述 在高层的角度上看,每一个Spark应用都有一个驱动程序(driver program).驱动程序 ...

  7. 精读《C++ primer》学习笔记(第四至六章)

    第四章: 重要知识点: 4.1 基础 函数调用是一种特殊的运算符,它对运算对象的数量没有限制. 重载运算符时可以定义运算对象的类型,返回值类型,但运算对象的个数,运算符的优先级,结合律无法改变. 当一 ...

  8. 【Jmeter】Address already in use : connect &&Permission denied: connect 解决方案

    Address already in use : connect   该问题的原因为: Windows 提供给 TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收他们.就导致我们在短 ...

  9. gcc ld 链接器相关知识,调试指令(程序员的自我修养----链接、装载与库)

    最近解决一个动态链接上的问题,因为以前从来没有接触过这方面的知识,所以恶补了一下,首先要了解gcc编译指令(makefile),ld链接器的选项(还有连接脚本section指定内存位置),熟悉查看连接 ...

  10. 【java】之算法复杂度o(1), o(n), o(logn), o(nlogn)

    在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度, 这里进行归纳一下它们代表的含义: 这是算法的时空复杂度的表示.不仅仅用于表示时间复杂 ...