百度获取图片 json格式解析
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格式解析的更多相关文章
- plist文件、NSUserDefault 对文件进行存储的类、json格式解析
========================== 文件操作 ========================== Δ一 .plist文件 .plist文件是一个属性字典数组的一个文件: .plis ...
- JSON格式解析和libjson使用简介(关于cjson的使用示例)
JSON格式解析和libjson使用简介 在阅读本文之前,请先阅读下<Rss Reader实例开发之系统设计>一文. Rss Reader实例开发中,进行网络数据交换时主要使用到了两种数据 ...
- html中通过js获取接口JSON格式数据解析以及跨域问题
前言:本人自学前端开发,一直想研究下js获取接口数据在html的实现,顺利地找到了获取数据的方法,但是有部分接口在调用中出现无法展示数据.经查,发现时跨域的问题,花费了一通时间,随笔记录下过程,以方便 ...
- 几种不同的json格式解析
转连接: http://blog.csdn.net/whx405831799/article/details/42171191 内容很好 给服务端发送请求后,服务端会返回一连串的数据,这些数据在大部分 ...
- javascript json格式解析方法
json.parse用于从一个字符串中解析出json对象 stringify()用于从一个对象解析出字符串 var dataObj = eval("("+json+")& ...
- java获取本地json格式的内容
前言 该功能模块基于springBoot,自己在开发中遇到相关功能开发,总结如写: 1.首先将所需要获取的json文件放在项目resource目录下: 2.所需要的pom依赖: <depende ...
- jq获取后台json并解析
参考: $(function () { $.ajax({ url: 'tsconfig.json', type: 'GET', dataType: 'json', timeout: 1000, cac ...
- 前端 ajax 获取后台json数据 解析
先贴代码 function edit(node) { ).text(); alert(customerid) $.ajax({ type: "post", url: "/ ...
- 8. js中json格式解析
var doc = O_PARAMETER.FJSonStr;(doc为:{"items":[],"nextId":0}) //1.先转为json对象,主要有以 ...
随机推荐
- 【SQLServer】附加数据库失败
一个参考:https://blog.csdn.net/zjx86320/article/details/25562361 如果类似Administrator.Everyone等都依照网上的权限改过之后 ...
- 【转】Linux环境进程间通信(五) 共享内存(上)
转自:https://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html 采用共享内存通信的一个显而易见的好处是效率高,因为进程可以 ...
- Asp.Net : Page.RegisterStartupScript及 不执行的原因
RegisterStartupScript 把script放置在ASP.NET page的底部,而RegisterClientScriptBlock把script放置在ASP.NET page的顶部 ...
- Spark编程指南分享
转载自:https://www.2cto.com/kf/201604/497083.html 1.概述 在高层的角度上看,每一个Spark应用都有一个驱动程序(driver program).驱动程序 ...
- ArcEngine 调用GP里面的Merge工具
这两天,为ArcEngine中的Merge工具的调试伤头脑筋,明明很简单的事情,就是搞不掂儿.今天忽然想到是否是中文的关系,果然,把中文修改成英文成功了.真是快郁闷死了! public static ...
- Redis入门的简单使用
Redis是什么? redis是一个开源的,面向键/值对的NOSQL的分布式数据库系统 NOSQL指的是非关系型的数据,简单直白地讲就是在非关系型的数据库中不存在表的概念,而是以键值对的方式, 即一个 ...
- python基础知识11---函数1
函数 一.背景 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处 ...
- python基础知识7---补充
''' 不可变:数字,字符串,元组 可变:列表,字典 原子:数字,字符串 容器:列表,元组,字典 直接访问:数字 顺序:字符串,列表,元组 映射访问:字典 ''' #一一对应 a,b,c,d,e='h ...
- 【TFS 2010配置】总是提示:Error [ System Checks ] TF255466
服务器环境: Windows Server 2008 软件环境: 安装了360杀毒软件 以下为解决方案: 在验证是否可以安装 SharePoint 时的提示,Error [ System Checks ...
- 7.6.1 continue 语句
7.6.1 continue 语句 3种循环都可以使用CONTINUE语句.执行到该语句时,会跳过本次迭代的剩余部分,并开始下一轮迭代.如果continue语句在嵌套循环内,则只会影响包含该语句的内层 ...