https: //blog.csdn.net/qq_18932003/article/details/105016255 |
一、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), 0 ) as TJSONObject; |
// 读取results的数据 |
m_JSONObject := (m_JSONObject . GetValue( 'results' ) as TJSONArray).Get( 0 ) as TJSONObject; |
// 读取results中的weather_data的数组 |
m_Weather := m_JSONObject . GetValue( 'weather_data' ) as TJSONArray; |
// 循环读天气数据 |
for I := 0 to m_Weather . size - 1 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 )哦,谢谢。 |