七、Delphi10.3读取JSON数组

时间:2022-09-07 20:55:35

一、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;

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

七、Delphi10.3读取JSON数组

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

七、Delphi10.3读取JSON数组

七、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文件,实现省市区&sol;县(国标)三级联动

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

  9. ansible七种武器和json

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

随机推荐

  1. &lbrack;Effective C&plus;&plus; --016&rsqb;成对使用New和Delete时要采用相同形式

    这一节比较简单,可以总结为以下: std::string *stringPtr1 = new std::string; std::]; .. delete stringPtr1; // delete ...

  2. 【转】Jollen 的 Android 教學&comma;&num;12&colon; 如何建立選單 Menu

    原文网址:http://www.jollen.org/blog/2009/06/jollen-android-programming-12.html Android應用程式的UI可以使用XML來定義, ...

  3. HDU 5794 - A Simple Nim

    题意:    n堆石子,先拿光就赢,操作分为两种:        1.任意一堆中拿走任意颗石子        2.将任意一堆分成三小堆 ( 每堆至少一颗 )        分析:    答案为每一堆的 ...

  4. 08JS高级 ——&OpenCurlyDoubleQuote;继承”

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  5. Oracle 每隔5分钟产生2个clsc&ast;&period;log文件

    环境: OS:HP-UNIX 数据库:11.2.0.4   双机RAC (一)现象 在清理Oracle日志的时候,发现在$ORACLE_HOME/log/{instance_id}/client下面存 ...

  6. 每日一练之大整数加法(P1255 数楼梯)

    走楼梯走一步还是两步的问题其实就是斐波那契数列(F(n)=F(n-1)+F(n-2),而在int型范围内存在45个相异的数,题干说明楼梯总数可以为5000,则考虑使用字符串进行存储.当两个数相加产生进 ...

  7. linus jsch上传文件

    package com.osplat.util; import java.io.*; import com.jcraft.jsch.*;import com.osplat.bean.Resultmod ...

  8. C&num;编程(小结)---------- 小总结

    总结 概括 委托是寻址方法的.NET版本,类似于C++中的指针.委托可以理解为指向函数的指针,它是类型安全的,定义了具体的参数和返回值. 定义一个委托,实际上是定义一个类,委托是对方法的引用,如方法F ...

  9. web安全问题分析及处理

    前言 这是我观看了<前端漏洞分析及处理-蔡慧芨>公开课之后的一个总结及简单实践体会.在可能的情况下我会把他们都实际操作一遍,更加深刻地体会前端安全的重要性. web安全问题有哪些 XSS- ...

  10. git仓库

    关于仓库,我们先搞清楚三个概念:本地仓库.远程仓库和上游仓库.本地仓库是从远程仓库clone出来的,远程仓库可以从上游仓库fork出来.这里的clone和fork都是复制的意思,区别是本地和远程都是针 ...