json 研究

http://www.json.org/json-zh.html

 

http://blog.csdn.net/jondynet/archive/2009/06/19/4282786.aspx

 

JSON(JavaScript Object Notation) 类似与 XML;
虽始于 JavaScript, 但被多种语言支持, 它也成了 Delphi 2009 的新功能之一.



假如有一段 XML:


<id>2</id>
<name>张三</name>
<age>99</age>
用 json 可以表示为:
{"id":2, "name":"张三", "age":99}


json 在 JavaScript 中使用异常方便, 譬如:
//例1:



Data = {"id"
:2, "name"
:"张三"
, "age"
:99};

str = Data.id; //2


str = Data.name; //张三


str = Data["name"
]; //张三




//例2:


Data = {"id"
:2, "name"
:{"FirstName"
:"张"
, "LastName"
:"三"
}, "age"
:99};

str = Data.name.FirstName; //张


str = Data["name"
]["FirstName"
]; //张




//例3:


Data =

[

{"name"
:"张三"
, "age"
:9},

{"name"
:"李四"
, "age"
:19},

{"name"
:"王五"
, "age"
:29}

]

str = Data[2].name; //王五


str = Data[2]["name"
]; //王五




//例4:


Data = {"name"
:"张三"
, "age"
:19, "like"
:["游戏"
,"足球"
]};





str = Data.like[1]; //足球


str = Data["like"
][1]; //足球







本例中的 JavaScript 代码也可以在 Delphi 中调试, 参见:
http://www.cnblogs.com/del/archive/2008/08/06/1261580.html

json 中:
元素与值用冒号 ":" 隔开
元素与元素用逗号 "," 隔开
{} 之间是一个对象, 对象可以层层嵌套

[] 表示数组, 数组元素用逗号 "," 隔开

值可以是 string、number、object、array、true、false、null; 其中 string 要使用双引号(也有语言可以用单引号)

string 中可以使用类似 C 语言的转义字符

number 可以使用科学计数法

http://www.json.org/json-zh.html

json中文官方网站上的,3个delphi中的方案都有问题。
1、ujson.pas 内存泄漏非常厉害

不过支持中文的“名”


2、uLkJSON.pas

function getDouble(nm: string): Double; overload;
function getInt(nm: string): Integer; overload;
function getString(nm: string): string; overload;
function getWideString(nm: string): WideString; overload;
function getBoolean(nm: string): Boolean; overload;

这些函数好像只有
function getString(nm: string): string; overload;
function getWideString(nm: string): WideString; overload;
可以使用。

其他的,比如
function getInt(nm: string): Integer; overload;

{"intname":"1"}这样的字符

getint('intname');
一调用就出现类型转换错误异常。

3、superobject.pas

不支持中文的“名”
{"姓名":"你的姓名"}
这样的字符就无法解析。

只支持下面这种:
{"name":"你的姓名"}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值