gpt4 book ai didi

json - 使用 Delphi 7 解析 JSON

转载 作者:行者123 更新时间:2023-12-03 15:56:09 28 4
gpt4 key购买 nike

我有一个 JSON 文件,需要对其进行解析以提取一些值。

示例如下所示:

[
{
"period": "2016-06-07 - 2016-06-14",
"range": "2016-06-07..2016-06-14",
"items": [
{
"region_name": "Canterbury/Otago",
"region_id": 12,
"average_cover": 2099,
"average_growth": 16,
"reading_count": 3
},
{
"region_name": "Southland",
"region_id": 14,
"average_cover": 2068,
"average_growth": 3,
"reading_count": 1
},
{
"region_name": "Wairarapa \u0026 Hawkes Bay",
"region_id": 10,
"average_cover": 2195,
"average_growth": 20,
"reading_count": 2
}
]
},
{
"period": "2016-05-31 - 2016-06-07",
"range": "2016-05-31..2016-06-07",
"items": [
{
"region_name": "Canterbury/Otago",
"region_id": 12,
"average_cover": 2126,
"average_growth": 17,
"reading_count": 5
},
{
"region_name": "Southland",
"region_id": 14,
"average_cover": 2181,
"average_growth": 10,
"reading_count": 2
}
]
},
{
"period": "2016-05-24 - 2016-05-31",
"range": "2016-05-24..2016-05-31",
"items": [
{
"region_name": "Canterbury/Otago",
"region_id": 12,
"average_cover": 2139,
"average_growth": 28,
"reading_count": 6
},
{
"region_name": "Central Plateau",
"region_id": 6,
"average_cover": 2400,
"average_growth": 38,
"reading_count": 1
},
{
"region_name": "Wairarapa \u0026 Hawkes Bay",
"region_id": 10,
"average_cover": 2254,
"average_growth": 27,
"reading_count": 2
}
]
},
{
"period": "2016-05-18 - 2016-05-25",
"range": "2016-05-18..2016-05-25",
"items": [
{
"region_name": "Canterbury/Otago",
"region_id": 12,
"average_cover": 2183,
"average_growth": 39,
"reading_count": 6
},
{
"region_name": "Manawatu",
"region_id": 9,
"average_cover": 2315,
"average_growth": 42,
"reading_count": 1
},
{
"region_name": "Wairarapa \u0026 Hawkes Bay",
"region_id": 10,
"average_cover": 2228,
"average_growth": 29,
"reading_count": 2
}
]
},
{
"period": "2016-05-10 - 2016-05-17",
"range": "2016-05-10..2016-05-17",
"items": [
{
"region_name": "Canterbury/Otago",
"region_id": 12,
"average_cover": 2251,
"average_growth": 40,
"reading_count": 8
},
{
"region_name": "Otago",
"region_id": 13,
"average_cover": 2595,
"average_growth": 26,
"reading_count": 1
},
{
"region_name": "Southland",
"region_id": 14,
"average_cover": 2526,
"average_growth": 49,
"reading_count": 2
},
{
"region_name": "Waikato",
"region_id": 4,
"average_cover": 2484,
"average_growth": 60,
"reading_count": 1
},
{
"region_name": "Wairarapa \u0026 Hawkes Bay",
"region_id": 10,
"average_cover": 2201,
"average_growth": 34,
"reading_count": 2
}
]
}
]

我要提取的项目是 region_idaverage_coveraverage_growth

我已成功从第一个 items 数组中提取值,但我的示例 JSON 文件包含 4 个 items 数组,而且我似乎只能从第一个 items 元素。

我一直在使用 ulkJSON.pas 库,我的 Delphi 代码如下所示,将值发送到表单上的 TMemo:

var 
js: TlkJSONBase;
Items: TlkJSONbase;
I: Integer;
lHTTP: TIdHTTP;
sJSON: String;
begin
sJSON := // as per sample JSON text in question
js := TlkJSON.ParseText(sJSON);
Items := js.Field['items'];
for I := 0 to Pred(Items.Count) do begin
Memo1.Lines.Add(VarToStr(Items.Child[I].Field['region_id'].Value));
Memo1.Lines.Add(VarToStr(Items.Child[I].Field['average_cover'].Value));
Memo1.Lines.Add(VarToStr(Items.Child[I].Field['average_growth'].Value));
end;
end;

最佳答案

您没有考虑顶级数组。此代码适用于所示的 JSON:

var 
sJSON: String;
js, Items, Item: TlkJSONBase;
I, J: Integer;
begin
sJSON := // as per sample JSON text in question
js := TlkJSON.ParseText(sJSON);
for I := 0 to Pred(js.Count) do
begin
Items := js.Child[I].Field['items'];
for J := 0 to Pred(Items.Count) do begin
Item := Items.Child[J];
Memo1.Lines.Add(VarToStr(Item.Field['region_id'].Value));
Memo1.Lines.Add(VarToStr(Item.Field['average_cover'].Value));
Memo1.Lines.Add(VarToStr(Item.Field['average_growth'].Value));
end;
end;
end;

关于json - 使用 Delphi 7 解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37845434/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com