如何使用JSON

unit Q54; 

interface

  uses Classes, SysUtils, JSON; //必须引用JSON单元

procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);

implementation

{

  TJSONValue

    TJSONObject:json对象

    TJSONNumber:数值

    TJSONTrue

    TJSONFalse

    TJSONArray:数组

}

procedure Main(Npc: TNormNpc; Player: TPlayObject; Args: TArgs);

const

  json_obj = ‘{“name”:”77m2″,”version”:”2014.6.8″,”code”:100,”date”:”2014-06-08″,”names”:[“白野猪”,”黑野猪”],”objs”:[{“name”:”白野猪”,”hp”:2000},{“name”:”黑野猪”,”hp”:500}]}’;       

var

  V: TJSONValue;

  O: TJSONObject; 

  A: TJSONArray; 

  I: Integer;

begin

  //从json字符串中解析json对象

  V := ParseJSONValue(json_obj);

  if V <> nil then

  begin

    try

      if V is TJSONObject then

      begin

        O := V as TJSONObject;

        Npc.MessageBox(Player, O.Values[‘name’].Value);  //读取name的值

        A := O.Values[‘objs’] as TJSONArray;

      end; 

    finally

      V.Free;

    end;

  end;   

  //直接创建JSON对象,然后写入值

  O := TJSONObject.Create;

  try

    O.AddPair(‘name’, ’77m2′);  //加入字符串节点 

    O.AddPair(‘IsShared’, True); //true  

    O.AddPair(‘Deleted’, False); //false

    O.AddPair(‘Int’, 100); //整型

    O.AddPair(‘Float’, 1.25); //浮点

    A := TJSONArray.Create;  //创建一个数组对象

    A.Add(‘XXX’);

    A.Add(‘AAA’);

    O.AddPair(‘Array’, A); //将数组加到json对象中,加入之后json对象会负责释放这个数组对象,所以不能手工释放被加入到其他json对象的json对象

    Npc.MessageBox(Player, O.ToString);

  finally

    O.Free; //释放json对象O,同时O会负责其内的全部json对象,比如前面加入的数组A

  end;

end;

end.

注意:JSON对象将会作为自定义消息传输的格式

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。