The Nine

The Nine 是一名非常热爱编程以及旅游、心理学的青年,Delphi将是The Nine的主要编程语言,如果您的爱好和The Nine相近,那么请关注,如果您需要与我联系,请点击"发信给作者"我会及时和你联系!

JsonDataObjects

This Delphi unit contains a JSON parser that supports Delphi 2009-10Seattle and the platforms Win32, Win64 and ARM Android (MacOS and iOS may work).


Clone with GIT


> git clone git@github.com:ahausladen/JsonDataObjects.git

or


> git clone https://github.com/ahausladen/JsonDataObjects.git

This will get you the Json Data Objects repository.


How to install


Clone the JsonDataObjects repository

Add the JsonDataObjects.pas unit to your project.

Features


Fast dual JSON parser for parsing UTF8 and UTF16 without conversion

Automatic creation of arrays and objects

Easy access mode with implicit operators

Compact and formatted output modes

Variants support

Null can be auto-typecasted to a value type if JsonSerializationConfig.NullConvertsToValueTypes is set to True

Progress callback support for loading large JSON strings

Win32, Win64 and ARM Android support (MacOS and iOS may work)

Usage


Simple example


var

 Obj: TJsonObject;

begin

 Obj := TJsonObject.Parse('{ "foo": "bar", "array": [ 10, 20 ] }') as TJsonObject;

 try

  ShowMessage(Obj['foo']);

  ShowMessage(IntToStr(Obj['array'].Count));

  ShowMessage(IntToStr(Obj['array'].Items[0]));

  ShowMessage(IntToStr(Obj['array'].Items[1]));

 finally

  Obj.Free;

 end;

end;

Filling and serializing JSON objects


var

 Obj, ChildObj: TJsonObject;

begin

 Obj := TJsonObject.Create;

 try

  // easy access

  Obj['foo'] := 'bar';

  // normal (and faster) access

  Obj.S['bar'] := 'foo';

  // automatic array creation, Obj is the owner of 'array'

  Obj.A['array'].Add(10);

  Obj.A['array'].Add(20);

  // automatic object creation, 'array' is the owner of ChildObj

  ChildObj := Obj.A['array'].AddObject;

  ChildObj['value'] := 12.3;

  // automatic array creation, ChildObj is the owner of 'subarray'

  ChildObj.A['subarray'].Add(100);

  ChildObj.A['subarray'].Add(200);


  ShowMessage(Obj.ToJSON({Compact:=}False));

 finally

  Obj.Free;

 end;

{

  "foo": "bar",

  "bar": "foo",

  "array": [

    10,

    20,

    {

      "value": 12.3,

      "subarray": [

        100,

        200

      ]

    }

  ]

}

Copying JSON objects with Assign


var

 Obj, ClonedObj: TJsonObject;

begin

 Obj := TJsonObject.ParseUtf8('{ "foo": [ "bar", {}, null, true, false, { "key": "value" } ] }') as TJsonObject;

 try

  ClonedObj := TJsonObject.Create;

  try

   // Make a copy of Obj

   ClonedObj.Assign(Obj);

   ShowMessage(ClonedObj.ToJSON(False));

  finally

   ClonedObj.Free;

  end;

 finally

  Obj.Free;

 end;

end;

{

  "foo": [

    "bar",

    {},

    null,

    true,

    false,

    {

      "key": "value"

    }

  ]

}


评论

© The Nine | Powered by LOFTER