DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: jeff1314
今日帖子: 9
在线用户: 3
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2017/10/20 10:42:21
标题:
Delphi System.JSON 范例一 浏览:4007
加入我的收藏
楼主: Delphi有不少优秀的JSON 库,比如Superobject,X-Superobject,QJson,其实 Delphi 自带的 JSON 库挺好用的,日常应用足够了。

const
  JSON = '{ "o": { ' +
    '    "1234567890": {' +
    '    "last use date": "2010-10-17T01:23:20",' +
    '    "create date": "2010-10-17T01:23:20",' +
    '    "name": "iPhone 8s"' +
    '        }' +
    '  },' +
    '  "Index": 0, ' +
    '  "Data": {"Index2": 1}, ' +
    '  "a": [{' +
    '    "last use date": "2010-10-17T01:23:20",' +
    '    "create date": "2010-11-17T01:23:20",' +
    '    "name": "iPhone 8s",' +
    '    "arr": [1,2,3] ' +
    '  }, ' +
    '  {' +
    '    "message": "hello"' +
    '  }]' +
    '}';

var
  JsonObject: TJSONObject;
begin
  JsonObject := TJSONObject.ParseJSONValue(JSON) as TJSONObject;
  try
    if JsonObject <> nil then
    begin
      ShowMessage(DateTimeToStr(JsonObject.GetValue<TDateTime>('o.1234567890.last use date'))); // 2010-10-17 1:23:20
      ShowMessage(JsonObject.GetValue<string>('Data.Index2')); // 1
      ShowMessage(JsonObject.GetValue<string>('a[0].name')); // iPhone 8s

      ShowMessage(JsonObject.GetValue<string>('a[0].arr[2]')); // 3
      ShowMessage(JsonObject.GetValue<string>('a[1].message')); // hello
    end;
  finally
    FreeAndNil(JsonObject);
  end;
end;
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 thinknet (thinknet) ★☆☆☆☆ -
盒子活跃会员
2017/10/20 21:39:39
1楼: 用了2年的内置JSON解析了,第一次看到用泛型的GetValue方法,且支持二级直接取值,学习了,3KS
----------------------------------------------
-
作者:
男 ksrsoft (cb168) ★☆☆☆☆ -
普通会员
2017/10/21 12:36:33
2楼: 内置的慢慢在追赶,日常够用
----------------------------------------------
-
作者:
男 gaoyong_gy (gaoyong_gy) ★☆☆☆☆ -
盒子活跃会员
2017/10/25 8:31:13
4楼: 学习完毕,谢谢楼主。
----------------------------------------------
Delphi 的移动程序开发,是您不可再错失的机遇:http://blog.163.com/you888@188/blog/static/6723961920169319529515/
作者:
男 cuit_xiong (熊猫) ★☆☆☆☆ -
普通会员
2017/10/27 11:27:45
5楼: 从第一版就放弃了自带的这个,原因如下:
var
  JsonObj: TJSONObject;
begin
  JsonObj := TJSONObject.Create;
  JsonObj.AddPair('name', 'CCTV');
  JsonObj.AddPair('remark', '');
  ShowMessage(JsonObj.ToJSON);
end;
添加的时候如果添加的value是空字符串,结果给我直接把这个pair忽略了,什么垃圾?结果是:{"name":"CCTV"},而我要的结果是{"name":"CCTV","remark":""},很多人说自己去改源码很容易,这个我当然知道,但是你特么的系统库,让我去随便改,还说不垃圾吗???
----------------------------------------------
-
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2017/10/27 11:50:31
6楼: @cuit_xiong D10.2.1 正常
此帖子包含附件:
PNG 图像
大小:20.8K
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 cuit_xiong (熊猫) ★☆☆☆☆ -
普通会员
2017/10/27 11:58:18
7楼: 难道我用的是假delphi?
我用的是lusper 版本的10.1 up2
此帖子包含附件:
JPEG 图像
大小:26.2K
----------------------------------------------
-
作者:
男 cuit_xiong (熊猫) ★☆☆☆☆ -
普通会员
2017/10/27 11:58:56
8楼: uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.JSON;

use的这些
----------------------------------------------
-
作者:
男 cuit_xiong (熊猫) ★☆☆☆☆ -
普通会员
2017/10/27 12:01:58
9楼: 这段代码能证明不是我在使坏吧
此帖子包含附件:
JPEG 图像
大小:97.1K
----------------------------------------------
-
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2017/10/27 13:18:22
10楼: 是个bug,AddPair第二个参数Val不应该是否为空的。
10.2.1是正常的。
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 leisure520 (高家坳小宝) ▲▲▲▲▲ -
普通会员
2017/10/27 13:20:14
10楼: 看了下上面的图,估计得追究到字符串为 '' 和 empty的区别了。




----------------------------------------------
-
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2017/10/27 13:40:45
11楼:  '' 和 empty 一样的。

这是10.2.1的源码:
此帖子包含附件:
PNG 图像
大小:11.5K
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 cuit_xiong (熊猫) ★☆☆☆☆ -
普通会员
2017/10/27 13:50:43
12楼: 哈哈哈,原来这样,从刚开始自带这个json类的时候我就发现这个问题了,到我现在使用的10.1.2还有问题,到10.2终于好了,emb神速
----------------------------------------------
-
作者:
男 cuit_xiong (熊猫) ★☆☆☆☆ -
普通会员
2017/10/27 13:51:58
13楼: 新版本开发者的素质,简直没法和d7那时候比啊,看源码的变量命名,代码格式就看出来了
----------------------------------------------
-
作者:
男 earthsbest (全能中间件) ▲▲▲▲△ -
普通会员
2017/10/27 14:48:32
14楼: 我用这么久没发现,不过没这样用过。
发现问题,把问题提交给官方才是,否则可能一百年也不会改,因为没人知道有这个bug。
----------------------------------------------
Delphi4Linux Delphi三层/FireDAC 技术群:734515869 http://www.cnblogs.com/rtcmw
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/10/28 9:42:07
15楼: 顶楼上。
我们应该感谢哪个将 BUG 提交给 EMB 的人。
否则 10.250 都改不了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 ksrsoft (cb168) ★☆☆☆☆ -
普通会员
2018/1/25 18:49:47
16楼: 二级直接取值 self.Caption := jo.GetValue<string>('data.token');
----------------------------------------------
-
作者:
男 jiuk (愛像一陣風) ★☆☆☆☆ -
普通会员
2018/6/20 19:42:37
17楼: mark有用
----------------------------------------------
Delphi业余爱好者
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行113.2813毫秒 RSS