RAD Studio 10.2.3 测试√
打印结果
小学一年级
[{"Sex":"男","Name":"小印01"},{"Sex":"女","Name":"小印02"}]
{"Sex":"男","Name":"小印03"}
{
"Sex": "男",
"Name": "小印03"
}
======================
这个 JSON 数组的长度: 2
{"Sex":"男","Name":"小印01"}
字段:Sex Value: 男
{"Sex":"女","Name":"小印02"}
字段:Name Value: 小印02
======================
Name: 小印01 Sex: 男
Name: 小印02 Sex: 女
代码
procedure TForm_Tips.Button_JSONClick(Sender: TObject); // 解析JSON[superobject.pas]
const
JSON_STR = '{"ClassName":"小学一年级","Student1":[{"Name":"小印01","Sex":"男"},{"Name":"小印02","Sex":"女"}],"Student2":{"Name":"小印03","Sex":"男"}}';
var
mJSON, mJSONItem: ISuperObject;
mJSONArr: TSuperArray;
i: Integer;
mKey, mValue: string;
begin
mJSON := SO(JSON_STR); // 这句可以算是解析放入的 JSON 数据
// 然后就可以通过 mJSON 获取到想得到的节点数据
Memo_Log.Lines.Add(mJSON['ClassName'].AsString);
Memo_Log.Lines.Add(mJSON['Student1'].AsString);
Memo_Log.Lines.Add(mJSON['Student2'].AsString);
mJSONItem := mJSON['Student2'];
Memo_Log.Lines.Add(mJSONItem.AsJSon(True, False)); // 参数1:是否进行缩进,相当于格式美化 参数2:是否进行 escape【一种编码,可度娘】
Memo_Log.Lines.Add('======================');
mJSONArr := mJSON['Student1'].AsArray;
Memo_Log.Lines.Add('这个 JSON 数组的长度: ' + IntToStr(mJSONArr.Length));
// 可以通过循环的方式进行对内容进行读取
for i := 0 to mJSONArr.Length - 1 do
begin
Memo_Log.Lines.Add(mJSONArr[i].AsString);
// 再次解析其中的内容
mJSONItem := mJSONArr.O[i];
mKey := mJSONItem.AsObject.GetNames.AsArray[i].AsString;
mValue := mJSONItem.AsObject.GetValues.AsArray[i].AsString;
Memo_Log.Lines.Add('字段:' + mKey + ' ' + 'Value: ' + mValue);
Memo_Log.Lines.Add('');
end;
Memo_Log.Lines.Add('======================');
// 还可以使用 in 进行遍历
for mJSONItem in mJSON['Student1'] do
begin
Memo_Log.Lines.Add('Name: ' + mJSONItem['Name'].AsString + ' ' + 'Sex: ' + mJSONItem['Sex'].AsString);
end;
end;
一点点笔记,以便以后翻阅。