Delphi 解析JSON[superobject.pas]

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;

一点点笔记,以便以后翻阅。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小印丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值