var
h,i: integer;
ss, url: string;
mem: TMemoryStream;
str1: tstringlist;
memstr: TStringStream;
iddec: TIdEncoderMIME;
JSONObject,JSONObject2: TJSONObject; // JSON类
jsonArray: TJSONArray; // JSON数组变量
temp: string; // 临时使用变量
begin
token := '24.49a7c8acdbf69413ce0f998ad39a7a3d.2592000.1548050649.282335-9533039'; //图片获取的token
if token = '' then
Application.MessageBox('请输入token', '提示', MB_OK + MB_ICONINFORMATION + MB_TOPMOST)
else if cxImage1.Picture.Width = then
Application.MessageBox('请先载入图片', '提示', MB_OK + MB_ICONSTOP + MB_TOPMOST)
else
begin
iddec := TIdEncoderMIME.Create;
screen.Cursor := crhourglass;
// ssl.SSLOptions.Method:= sslvSSLv3;
memstr := TStringStream.Create;
mem := TMemoryStream.Create;
str1 := tstringlist.Create;
try
cxImage1.Picture.SaveToStream(mem);
mem.Position := ;
ss := iddec.Encode(mem); // *******
mem.Free; //提交
str1.Add('image=' + URLEncode(ss));
url := 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token=';
// https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=
// https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic ?access_token=
url := url + token; RESTRequest1.AddParameter('image', ss); //传送一个图片的流
RESTClient1.BaseURL := url;
restrequest1.Execute;
ss := RESTResponse1.Content; //获取返回值
finally memstr.Free;
str1.Free;
iddec.Free;
screen.Cursor := crdefault;
end;
JSONObject := nil;
JSONObject:=TJSONObject.ParseJSONValue(Trim(ss)) as TJSONObject;
if JSONObject.Count > then
begin
{ 1,遍历JSON数据 }
mmo2.Lines.Add('遍历JSON数据:' + ##);
mmo2.Lines.Add('JSON数据数量:' + IntToStr(JSONObject.Count));
for i := to JSONObject.Count - do
begin
if i = then
begin
temp := JSONObject.Get(i).ToString + ##;;
end
else
begin
temp := temp + JSONObject.Get(i).ToString + ##;
end;
end;
mmo2.Lines.Add(temp);
temp := 'words = ' + JSONObject.Values['words_result'].ToString + ##;
jsonArray := TJSONArray(JSONObject.GetValue('words_result'));
if jsonArray.Count > then
begin
// 得到JSON数组字符串
temp := 'other = ' + JSONObject.GetValue('words_result').ToString + ##; // 循环取得JSON数组中每个元素
for i := to jsonArray.Size - do
begin
JSONObject2:=TJSONObject.ParseJSONValue(Trim(jsonArray.Items[i].ToString)) as TJSONObject;
temp := temp + IntToStr(i + ) + ' : ' + JSONObject2.Values['words'].ToString + ##;
end;
end;
Mmo2.Lines.Add(temp);
end; // mmo2.Lines.Add(SJson.GetValue('words').ToString);
h := pos('words":', ss);
if h > then
begin
while h > do
begin
delete(ss, , h + );
delete(ss, , pos('"', ss));
mmo1.Lines.Add(copy(ss, , pos('"', ss) - ));
h := pos('words":', ss);
end;
end
else
mmo1.Lines.Add(ss); end;
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. Centos7快速安装docker

    偶然间发现,docker的安装好容易啊 系统环境:centos7.3 yum源: docker:https://mirrors.aliyun.com/docker-ce/linux/centos/do ...

  2. 左耳听风-ARTS-第3周(2019/4/7-2019/4/13)

    Algorithm 本周的算法题是按顺序合并两个已排序的链表(https://leetcode.com/problems/merge-two-sorted-lists/).和归并排序的合并已排序数组的 ...

  3. py-day4-1 python reduce函数

    from functools import reduse    从模块中导入 reduce函数: 处理一个序列,然后把序列进行合并操作 #**** 问题:求1+2+3+100的和是多少? # 一,原始 ...

  4. ASP.NET MVC 枚举类型转LIST CONTROL控件

    在实际应用中,我们经常会用到下拉框.多选.单选等类似的控件,我们可以统称他们为List Control,他们可以说都是一种类型的控件,相同之处都是由一个或一组键值对的形式的数据进行绑定渲染而成的. 这 ...

  5. HanLP Analysis for Elasticsearch

    基于 HanLP 的 Elasticsearch 中文分词插件,核心功能: 兼容 ES 5.x-7.x: 内置词典,无需额外配置即可使用: 支持用户自定义词典: 支持远程词典热更新(待开发): 内置多 ...

  6. MQTT研究之EMQ:【wireshark抓包分析】

    基于上篇博文[SSL双向验证]的环境基础,进行消息的具体梳理. 环境基础信息: . 单台Linux CentOS7.2系统,安装一个EMQTTD的实例broker. . emq的版本2.3.11. . ...

  7. 微信小程序托管 推广 开发 就找北京动点软件

    微信小程序托管 外包 微信小程序外包 H5外包 就找北京动点软件 长年承接微信小程序.微信公众号开发 全职的H5开发团队,开发过几十款微信小程序公众号案例 欢迎来电咨询,索取案例! QQ:372900 ...

  8. Maven安装问题

    这是网上常见的解决方法,由于网络原因maven中央仓库的jar包经常加载不下来,很头疼的一个问题,如果第一个方法解决不了,那就用第二种方法 一.常见解决方法 二.第二种解决方法,使用阿里云的仓库 &l ...

  9. HTML 部分非常用标签

    标签 描述 示例 <!DOCTYPE>  定义文档类型. HTML5 : <!DOCTYPE html> HTML4.* :<!DOCTYPE HTML PUBLIC & ...

  10. Python高级变量类型

    1.列表基础操作 2.列表循环遍历 3.元组 4.字典基础操作 5.字典循环遍历 6.字符串基础操作 7.字符串切片 8.公共方法