在Delphi中使用JSon
先来看看什么是Json
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, Delphi,JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
在http://www.json.org/json-zh.html中,已经提供了针对各种语言的json支持。
从它名字中就可以看出,json最早是来源于javascript,在javascript中操作json数据异常简单清晰。可以像操作类对象一样运用json数据,如
//example1:
jdata ={"name":"老王","age":"25"};
str1 = jdata.name;//老王
str2 = jdata["name"];//老王
//example2:
jdata ={"name":"老王","age":"25","address":{"address1":"福州","address2":"厦门"}};
str1 = jdata.address.address1;//福州
str2 = jdata["address"]["address1"];//福州
在Delphi2009之后的版本已经加入了对json的支持,不再需要第三方类库的支持。但我跟喜欢用Henri Gourvest的开发的SuperObject,有兴趣的可以到http://www.progdigy.com/?page_id=6了解,最新版是1.24.
SuperObject提供了两个类库文件SuperObject.pas,superxmlparser.pas,其中SuperObject.pas就是用于操作json数据,而superxmlparser.pas用与从XML数据中解析出json数据。
简单例子
uses SuperObject;
procedure TForm1.Button1Click(Sender: TObject);
var
soTest:ISuperObject;
begin
soTest := so('{"name":"张三","age":"25","address":{"Address1":"福州","address2":"厦门"}}');
//等价的方法 soTest := TSuperObject.ParseString('{"name":"张三","age":"25","address":{"Address1":"福州","address2":"厦门"}}');
ShowMessage(soTest['name'].AsString);//张三
ShowMessage(soTest['address.Address1'].AsString);//福州
end;
SuperObject类库提供了类似javascript操作json的数据的方式,相当方便。