Delphi XE7有一个对JSON处理的单元,在你需要使用JSON的单元里面引入"System.json",随后你就可以用Delphi自己的json处理类了。我写的小例子只是对包含字符串和数组的JSON进行解析,这两种数据类型,我觉得是实际使用中最常用、有用的类型,所以我仅仅用这两种例子做演示!

演示代码:

{功能:DelphiXE7中使用JSON------------------------------------------------------------------------------说明:1,使用Delphi自己带的JSON(system.json)。2,这仅仅是一个简单例子,以后还会增加演示功能。------------------------------------------------------------------------------注意:1,JSON类创建后,里面所有元素不用管释放,JSON类自己管理,千万不要画蛇添足啊!!!!!!------------------------------------------------------------------------------作者:孙玉良 QQ:14667479 Email:sunylat@163.com  修改时间:2014/11/23 00:13------------------------------------------------------------------------------开发工具:Delphi XE7测试手机:华为荣耀X1
}
unit Unit1;interfaceusesSystem.SysUtils, System.Types, System.UITypes, System.Classes,System.Variants,FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,FMX.Layouts, FMX.Memo;typeTForm1 = class(TForm)Panel1: TPanel;Memo1: TMemo;Panel2: TPanel;Button1: TButton;Button2: TButton;Memo2: TMemo;Button3: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure FormCreate(Sender: TObject);procedure Button3Click(Sender: TObject);procedure FormResize(Sender: TObject);private{ Private declarations }// 重新设置button按钮procedure ResetButton;public{ Public declarations }end;varForm1: TForm1;const// 演示用的JSONjsonString = '{"name":"张三", "other":["中国","程序员"]}';implementation{$R *.fmx}usesSystem.json; // Dephi自带的JSON单元procedure TForm1.Button1Click(Sender: TObject);
varJSONObject: TJSONObject; // JSON类i: Integer; // 循环变量temp: string; // 临时使用变量jsonArray: TJSONArray; // JSON数组变量
beginif Trim(Memo1.Text) = '' thenbeginShowMessage('要解析数据不能为空!');endelsebeginJSONObject := nil;try{ 从字符串生成JSON }JSONObject := TJSONObject.ParseJSONValue(Trim(Memo1.Text)) as TJSONObject;if JSONObject.Count > 0 thenbegin{ 1,遍历JSON数据 }Memo2.Lines.Add('遍历JSON数据:' + #13#10);Memo2.Lines.Add('JSON数据数量:' + IntToStr(JSONObject.Count));for i := 0 to JSONObject.Count - 1 dobeginif i = 0 thenbegintemp := JSONObject.Get(i).ToString + #13#10;;endelsebegintemp := temp + JSONObject.Get(i).ToString + #13#10;end;end;{ output the JSON to console as String }Memo2.Lines.Add(temp);Memo2.Lines.Add('------------------------------');{ 2,按元素解析JSON数据 }Memo2.Lines.Add('按元素解析JSON数据:' + #13#10);temp := 'name = ' + JSONObject.Values['name'].ToString + #13#10;Memo2.Lines.Add(temp);// json数组jsonArray := TJSONArray(JSONObject.GetValue('other'));;if jsonArray.Count > 0 thenbegin// 得到JSON数组字符串temp := 'other = ' + JSONObject.GetValue('other').ToString + #13#10;// 循环取得JSON数组中每个元素for i := 0 to jsonArray.Size - 1 dobegintemp := temp + IntToStr(i + 1) + ' : ' + jsonArray.Items[i].Value + #13#10;end;end;Memo2.Lines.Add(temp);endelsebegintemp := '没有数据!';Memo2.Lines.Add(temp);end;finallyJSONObject.Free;end;end;end;// 清空显示数据
procedure TForm1.Button2Click(Sender: TObject);
beginMemo1.Text := '';Memo2.Text := '';
end;// 设置要解析的JSON数据
procedure TForm1.Button3Click(Sender: TObject);
beginMemo1.Text := jsonString;
end;// 设置要解析的JSON数据
procedure TForm1.FormCreate(Sender: TObject);
beginMemo1.Text := jsonString;
end;procedure TForm1.FormResize(Sender: TObject);
begin// 重新设置button按钮self.ResetButton;
end;// 重新设置button按钮
procedure TForm1.ResetButton;
varbuttonWidth: Integer;
beginbuttonWidth := self.Width div 3;Button1.Width := buttonWidth;Button2.Width := buttonWidth;Button3.Width := buttonWidth;
end;end.

源代码下载:http://dl5.csdn.net/fd.php?i=942981887415230&s=8613165e1e05b7e0f273b3a4729e2d0b

转载于:https://www.cnblogs.com/sunylat/p/6217651.html

Delphi XE7中使用JSON相关推荐

  1. Delphi XE7中新并行库

    Delphi XE7中添加了新的并行库,和.NET的Task和Parellel相似度99%. 详细内容能够看以下的文章: http://www.delphifeeds.com/go/s/119574 ...

  2. Delphi XE7实现的任意位置弹出菜单

    Delphi XE7中目前还没有弹出菜单组件,这个弹出菜单应用很普遍,在JAVA开发的安卓程序中很简单就可以用上了,应该说是一个标准控件.看了一些例子,但是都不能满足我想在任意位置弹出菜单需求,于是自 ...

  3. 预习 Delphi 2009 中的新功能 - JSON (二) : 如何在 Delphi 中使用 json

    为什么80%的码农都做不了架构师?>>>    在 Delphi 中使用 json, http://www.json.org/ 已经给出了几种方案, 但 Delphi 2009 使用 ...

  4. Delphi语言最好的JSON代码库 mORMot学习笔记1

    mORMot没有控件安装,直接添加到lib路径, 工程中直接添加syncommons,syndb等到uses里 -------------------------------------------- ...

  5. Delphi xe7并行编程快速入门

    现在多数设备.计算机都有多个CPU单元,即使是手机也是多核的.但要在开发中使用多核的优势,却需要一些技巧,花费时间编写额外的代码.好了,现在可以使用Delphi做并行编程了. 在Delphi.C++ ...

  6. java中json重复数据结构_JS实现去除数组中重复json的方法示例

    本文实例讲述了JS实现去除数组中重复json的方法.分享给大家供大家参考,具体如下: var array = [{"name":"123"},{"na ...

  7. 在C语言中解析json配置文件

    业务需求 在C或者C++项目中常常需要解析配置文件,我们常见的配置文件格式一般就是.ini,xml,lua或者是一般的text文件,这些格式比较恼人的一个问题就是数据格式过于冗余,或者功能不够强大,不 ...

  8. 如何在Django中接收JSON格式的数据

    Django做了大量工作简化我们的Web开发工作, 这其中当然也包括接收来自客户端的数据这一普遍需求. 大部分时候,从客户端传入的数据主要是FORM的POST数据,和来自URL的GET数据, 在Dja ...

  9. Android中的JSON详细总结

    1.JSON(JavaScript Object Notation) 定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式, ...

最新文章

  1. Eclipse工具栏上android的机器人小图标和adt图片的显示
  2. 图结构练习——DFS——判断可达性
  3. struts2处理请求流程详解
  4. cors跨域_Spring Boot 中通过 CORS 解决跨域问题
  5. 计算机程序设计社团,学生社团管理系统
  6. Qt多线程应用--QRunnable
  7. 两种方法上传本地文件到github
  8. 解析几何 —— 椭圆
  9. pix2pixhd_图像翻译三部曲:pix2pix, pix2pixHD, vid2vid
  10. 华为交换机初始化_华为交换机如可恢复出厂设置
  11. 2022最新高级java面试题
  12. Java计算组合数以及生成组合排列
  13. java table注解_java注解简单使用
  14. 2021年中国百香果果汁进出口贸易分析:贸易逆差明显,越南是主要进口国[图]
  15. php 中%3cspan%3e,隐藏第三方网站统计图标
  16. 实战例子:Solidity代码小失误导致池子里60万U被盗空
  17. 高效的学习方法(费曼学习方法)
  18. 推荐系统从入门到接着入门
  19. 【目标跟踪 SOT】SiamFC -用于对象跟踪的全卷积孪生网络
  20. 脑电分析系列[MNE-Python-20]| 脑电图处理和事件相关电位(ERP)

热门文章

  1. PlayOnLinux 安装 金山打字通2016
  2. python-人工智能基础
  3. LIS系统源码 医学实验室/检验管理系统源码(LIS)LIS源码
  4. 申请HTTPS需要哪些条件?如何申请?
  5. 上海高考物理能不能用计算机,高考改革后物理到底有多重要
  6. 一些关于成都开发者环境的情况
  7. .net core httpclient An error occurred while sending the request
  8. cmake make C语言
  9. 什么是以太网供电POE
  10. python db读写实践