在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的数据的方式,相当方便。