3、利用SuperObject 循环处理Json深层次的值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | //遍历对象 procedure TForm1 . Button5Click(Sender: TObject); var item,jo: ISuperObject; ja,JA_TYPE,JA_MAC:TSuperArray; //json数组 i,j,k: Integer ; jts: TSuperTableString; //TSuperTableString 的常用属性: count、GetNames、GetValues begin jo := SO(Memo1 . Text); jts:=jo . AsObject; mmo1 . Lines . Add( '结点数:' +IntToStr(jts . count )); mmo1 . Lines . Add( '键名:' +jts . GetNames . AsString); mmo1 . Lines . Add( '键值:' +jts . GetValues . AsString); jts:=jo[ 'addresses' ].AsObject; mmo1 . Lines . Add( '结点数:' +IntToStr(jts . count )); mmo1 . Lines . Add(jts . GetNames . AsString); mmo1 . Lines . Add( '键值:' +jts . GetValues . AsString); jts:=jo . A[ 'children' ].N[ 0 ].AsObject; mmo1 . Lines . Add( '结点数:' +IntToStr(jts . count )); mmo1 . Lines . Add(jts . GetNames . AsString); mmo1 . Lines . Add( '键值:' +jts . GetValues . AsString); jts:=jo . A[ 'children' ].N[ 0 ].A[ 'M_TYPE' ].N[ 0 ].AsObject; mmo1 . Lines . Add( '结点数:' +IntToStr(jts . count )); mmo1 . Lines . Add(jts . GetNames . AsString); mmo1 . Lines . Add( '键值:' +jts . GetValues . AsString); jts:=jo . A[ 'children' ].N[ 0 ].A[ 'M_TYPE' ].N[ 0 ].A[ 'MACHINE' ].N[ 0 ].AsObject; mmo1 . Lines . Add( '结点数:' +IntToStr(jts . count )); mmo1 . Lines . Add(jts . GetNames . AsString); mmo1 . Lines . Add( '键值:' +jts . GetValues . AsString); ja:=jo . A[ 'children' ]; //等同 ja:=jo.O['children'].AsArray; for i := 0 to ja . Length- 1 do begin mmo1 . Lines . Add( '店主:' +ja . O[i].s[ 'name' ]); //区分大小写 JA_TYPE:=ja . O[i].O[ 'M_TYPE' ].AsArray; for j := 0 to ja_type . Length- 1 do begin mmo1 . Lines . Add( '出票类型:' +IntToStr(JA_TYPE . O[j].I[ 'MACHINE_TYPE' ])); mmo1 . Lines . Add( '出票类型名:' +JA_TYPE . O[j].s[ 'MACHINE_NAME' ]); JA_MAC:=JA_TYPE . O[j].O[ 'MACHINE' ].AsArray; for k := 0 to ja_mac . Length- 1 do begin mmo1 . Lines . Add( '机器编号:' +JA_MAC . O[k].s[ 'MACHINE_NO' ]); mmo1 . Lines . Add( '机器状态:' +IntToStr(JA_MAC . O[k].I[ 'STATUS' ])); mmo1 . Lines . Add( '机器余额:' +FloatToStr(JA_MAC . O[k].D[ 'BALANCE' ])); end ; end ; end ; // for item in jo do ShowMessage(item.AsJSon(False, False)); end ; |
//Json 格式如下
- {
- "name": "张三",
- "age": 33,
- "sex": true,
- "weight": 123.456,
- "tel": [ "86-1111111", "86-2222222" ],
- "addresses": {
- "address": "A省B市",
- "pc": "100001"
- },
- "children": [
- {
- "name": "张继",
- "age": "22",
- "sex": true,
- "M_TYPE": [
- {
- "MACHINE_TYPE": 1,
- "MACHINE_NAME": "传统",
- "MACHINE": [ { "MACHINE_NO": "26088", "STATUS": 2, "BALANCE": 12.3 } ]
- },
- {
- "MACHINE_TYPE": 2,
- "MACHINE_NAME": "竞彩",
- "MACHINE": [{ "MACHINE_NO": "26093", "STATUS": 1, "BALANCE": 100.22 } ]
- }
- ]
- },
- {
- "name": "张承",
- "age": "11",
- "sex": false,
- "M_TYPE": [
- {
- "MACHINE_TYPE": 3,
- "MACHINE_NAME": "传统",
- "MACHINE": [{"MACHINE_NO": "26038", "STATUS": 3, "BALANCE": 1300.5} ]
- }
- ]
- }
- ]
- }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战