{
"value": "110000",
"label": "北京市",
"children": [
{
"value": "110101",
"label": "东城区"
},
{
"value": "110102",
"label": "西城区"
},
{
"value": "110105",
"label": "朝阳区"
},
{
"value": "110106",
"label": "丰台区"
},
{
"value": "110107",
"label": "石景山区"
},
{
"value": "110108",
"label": "海淀区"
},
{
"value": "110109",
"label": "门头沟区"
},
{
"value": "110111",
"label": "房山区"
},
{
"value": "110112",
"label": "通州区"
},
{
"value": "110113",
"label": "顺义区"
},
{
"value": "110114",
"label": "昌平区"
},
{
"value": "110115",
"label": "大兴区"
},
{
"value": "110116",
"label": "怀柔区"
},
{
"value": "110117",
"label": "平谷区"
},
{
"value": "110118",
"label": "密云区"
},
{
"value": "110119",
"label": "延庆区"
}
]
}
uses
System.JSON.Readers, System.JSON.Types, System.JSON;
procedure TFramMenu.UniButton1Click(Sender: TObject);
var
JSONObject: TJSONObject; // JSON类
i: Integer; // 循环变量
temp: string; // 临时使用变量
jsonArray: TJSONArray; // JSON数组变量
begin
//Memo1.Text := jsonString;
if Trim(Memo1.Text) = '' then
ShowMessage('要解析数据不能为空!')
else
begin
JSONObject := nil;
try
{ 从字符串生成JSON }
JSONObject := TJSONObject.ParseJSONValue(Trim(Memo1.Text)) as TJSONObject;
if JSONObject.Count > 0 then
begin
{ 1,遍历JSON数据 }
Memo2.Lines.Add('遍历JSON数据:' + #13#10);
Memo2.Lines.Add('JSON数据数量:' + IntToStr(JSONObject.Count));
for i := 0 to JSONObject.Count - 1 do
begin
if i = 0 then
temp := JSONObject.Get(i).ToString + #13#10
else
temp := temp + JSONObject.Get(i).ToString + #13#10;
end;
{ output the JSON to console as String }
Memo2.Lines.Add(temp);
Memo2.Lines.Add('------------------------------');
{ 2,按元素解析JSON数据 }
Memo2.Lines.Add('按元素解析JSON数据:' + #13#10);
temp := 'value = ' + JSONObject.Values['value'].ToString + #13#10;
Memo2.Lines.Add(temp);
// json数组
jsonArray := TJSONArray(JSONObject.GetValue('children'));
;
if jsonArray.Count > 0 then
begin
// 得到JSON数组字符串
temp := 'children = ' + JSONObject.GetValue('children').ToString + #13#10;
// 循环取得JSON数组中每个元素
for i := 0 to jsonArray.Size - 1 do
begin
temp := temp + IntToStr(i + 1) + ' : ' + jsonArray.Items[i].FindValue('label').ToString + #13#10;
end;
end;
Memo2.Lines.Add(temp);
end
else
begin
temp := '没有数据!';
Memo2.Lines.Add(temp);
end;
finally
JSONObject.Free;
end;
end;
end;