一、Delphi读取JSON数组是非常方便的,首先我们网上找一段JSON数据

{
"error": 0,
"status": "success",
"date": "2014-03-04",
"results": [{
"currentCity": "成都",
"weather_data": [{
"date": "周二(今天, 实时:12℃)",
"dayPictureUrl": "http://api.map.baidu.com/images/weather/day/duoyun.png",
"nightPictureUrl": "http://api.map.baidu.com/images/weather/night/duoyun.png",
"weather": "多云",
"wind": "北风微风",
"temperature": "15 ~ 6℃"
}, {
"date": "周三",
"dayPictureUrl": "http://api.map.baidu.com/images/weather/day/yin.png",
"nightPictureUrl": "http://api.map.baidu.com/images/weather/night/xiaoyu.png",
"weather": "阴转小雨",
"wind": "北风微风",
"temperature": "14 ~ 7℃"
}, {
"date": "周四",
"dayPictureUrl": "http://api.map.baidu.com/images/weather/day/xiaoyu.png",
"nightPictureUrl": "http://api.map.baidu.com/images/weather/night/xiaoyu.png",
"weather": "小雨",
"wind": "北风微风",
"temperature": "12 ~ 7℃"
}, {
"date": "周五",
"dayPictureUrl": "http://api.map.baidu.com/images/weather/day/xiaoyu.png",
"nightPictureUrl": "http://api.map.baidu.com/images/weather/night/xiaoyu.png",
"weather": "小雨",
"wind": "南风微风",
"temperature": "9 ~ 6℃"
}]
}]
}

二、我们用Delphi读取,代码如下:

uses
REST.Json,
System.Json,
System.Types,
System.Json.Types,
System.Json.Writers,
System.Json.Builders,
System.Json.Serializers; procedure TForm1.Button7Click(Sender: TObject);
var
m_JSONObject: TJSONObject;
m_Item1, m_Item2, m_Item3, m_Item4: TJSONValue;
m_Weather: TJSONArray;
m_Str: string;
m_Result: string;
I: Integer;
begin
// 读JSON文本
m_Str := Trim(Memo1.text);
// 防止乱码
m_JSONObject := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(m_Str), ) as TJSONObject;
// 读取results的数据
m_JSONObject := (m_JSONObject.GetValue('results') as TJSONArray).Get() as TJSONObject;
// 读取results中的weather_data的数组
m_Weather := m_JSONObject.GetValue('weather_data') as TJSONArray;
// 循环读天气数据
for I := to m_Weather.size - do
begin
// 取天气值
m_Item1 := (m_Weather.Get(I) as TJSONObject).GetValue('date');
m_Item2 := (m_Weather.Get(I) as TJSONObject).GetValue('weather');
m_Item3 := (m_Weather.Get(I) as TJSONObject).GetValue('wind');
m_Item4 := (m_Weather.Get(I) as TJSONObject).GetValue('temperature');
// 输出
Memo2.Lines.Add(Format('【日期%s】,【天气%s】,【风速%s】,【温度%s】', [m_Item1.Value, m_Item2.Value, m_Item3.Value, m_Item4.Value]));
end;
m_JSONObject.Free;
end;

三、运行一下,结果如下:

不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦,谢谢。

七、Delphi10.3读取JSON数组的更多相关文章

  1. 八、Delphi10.3读取JSON文件,并修改JSON数组一条内容后保存到文件

    一.我们有一个JSON文件,如下: { "在野": [ { "城池": 0, "武将": 74, "登场年": 190 ...

  2. Jackson将json string转为Object,org.json读取json数组

    从json文件读取json string或者自定义json string,将其转为object.下面采用的object为map,根据map读取json的某个数据,可以读取第一级的数据name,后来发现 ...

  3. 四、Delphi10.3读取JSON数据

    一.我们有一段JSON数据如下: { "五班": [ { "姓名": "张三", "成绩": 75.5 }, { &qu ...

  4. C# Json数组序列化和反序列总结

    1.创建json数组,例: JArray arrFile = new JArray(); arrFile.Add(new JObject() { new JProperty("FilePat ...

  5. 表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这种写法就是把组件嵌套改为配置方式

    表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这 ...

  6. iOS彩票项目--第七天,初次读取json数据、KVC转模型技巧、运行时字典转模型以及初步对显示网页的操作并且跟踪标签

    一.初次读取json数据 二.KVC转模型技巧,这里的技巧主要解决的是字典中的key 与 模型中有的属性对应不起来的时候 的解决办法 <方法1> <方法2>运行时字典转模型,运 ...

  7. java读取本地json数组并解析

    1.本地json位置 2,json数据 {"garbages":[{"id":"/m/011k07","ename":& ...

  8. jQuery读取json文件,实现省市区/县(国标)三级联动

    最近做一个微信项目,需要用户填写所在的省市区/县,决定使用jQuery读取json文件来实现省市区/县的联动. 其实很简单,jQuery文档也有详细解释: 代码如下: html <table w ...

  9. ansible七种武器和json

                                                               ansible七种武器和json • 第一种武器 – ansible 命令,用于执 ...

随机推荐

  1. redis介绍(4)实战场景

    redis我主要在两方面说明: 集群下的session的管理 Tomcat 与 DB之间缓存

  2. WCF3.5 SP1 参考源码索引

    http://www.projky.com/dotnet/WCF3.5SP1/Microsoft/InfoCards/AccessibilityApplicationManager.cs.htmlht ...

  3. 【转】数据分析与处理之二(Leveldb 实现原理)

    郑重声明:本篇博客是自己学习 Leveldb 实现原理时参考了郎格科技系列博客整理的,原文地址:http://www.samecity.com/blog/Index.asp?SortID=12,只是为 ...

  4. [CENTOS7] 修改机器名:hostnamectl set-hostname host.domain

    # hostnamectl set-hostname host.domain

  5. 12.2Data Guard新特性--使用DBMS_DBCOMP.DBCOMP数据比较

          Oracle Data Guard会主动对Hot数据(数据正被读取或修改)执行验证, 无论是primary还是standby,但对于那些Cold数据不会做任何检查和校验.所以在12.2版本 ...

  6. 使用FastCoder写缓存单例

    使用FastCoder写缓存单例 FastCoder可以存储字典,数组,鄙人将FastCoder封装,CoreData可以缓存的东西,用这个都可以缓存,但是只适合缓存少量的数据(不适合存储几万条数据) ...

  7. Linux基础优化和安全重点小结

    Linux基础优化和安全重点小结 1.不用root管理,以普通用户的名义通过sudo管理授权(/etc/sudoers)        2.更改默认的ssh服务端口,禁止root用户远程连接,甚至监听 ...

  8. 1星|《社群X平台》:没有实际工作经验的职业写手拼凑而成

    社群X平台 赋能企业指数级增长 网站上介绍作者有一些身份.书中没提作者的职位,只介绍是“码字为生”.书的封底有一些名人言论的引用,咋一看以为都是推荐本书,细看只有最后李善友在推荐本书,其他人的话都是跟 ...

  9. Linux常用命令笔记总结(待补充)

    问题实际场景:遇到告警磁盘利用率不足,检查根目录下各文件大小 Linux查看磁盘利用率 df –h 查找磁盘占用情况 find / -size +100M 从根目录往下找大于100M大小的文件 du ...

  10. 笔记本无密码连接wifi

    用手机可以用wifi万能钥匙破解wifi,就想找电脑版的wifi万能钥匙,然并卵. 就去寻找各种办法,最后找了个巧, 用手机下载wifi万能钥匙连接,并且使用数据线连接上笔记本. 然后手机设置中找到开 ...