项目作者: AlexDeww

项目描述 :
Simple Delphi JSON Serializer
高级语言: Pascal
项目地址: git://github.com/AlexDeww/DSON.git
创建时间: 2017-07-25T06:26:10Z
项目社区:https://github.com/AlexDeww/DSON

开源协议:

下载


DSON

Simple Delphi JSON Serializer
Tested on Delphi 10.2

How to Use

To Json

  1. uses
  2. uDSON;
  3. type
  4. TMyRecordType = (rtFoo, rtBar);
  5. TMyRecord = record
  6. recNo: Integer;
  7. recType: TMyRecordType;
  8. end;
  9. TMyObject = class
  10. private
  11. FFoo: string;
  12. FRec: TMyRecord;
  13. FRecord: TArray<TMyRecord>;
  14. FVal: Boolean;
  15. public
  16. property foo: string read FFoo write FFoo;
  17. property rec: TMyRecord read FRec write FRec;
  18. property records: TArray<TMyRecord> read FRecord write FRecord;
  19. [SerializedName('value_b')]
  20. property val: Boolean read FVal write FVal;
  21. end;
  22. procedure test();
  23. var
  24. myObj: TMyObject;
  25. myRec: TMyRecord;
  26. s: string;
  27. begin
  28. myObj := TMyObject.Create();
  29. myObj.foo := 'Hello';
  30. myRec.recNo := 20;
  31. myRec.recType := rtBar;
  32. myObj.rec := myRec;
  33. myObj.records := [myRec];
  34. myObj.val := False;
  35. s := DSON().toJson<TMyObject>(myObj);
  36. end;

Result

  1. {
  2. "foo": "Hello",
  3. "rec": {
  4. "recNo": 20,
  5. "recType": "rtBar"
  6. },
  7. "records": [
  8. {
  9. "recNo": 20,
  10. "recType": "rtBar"
  11. }
  12. ],
  13. "value_b": false
  14. }

From Json

  1. {
  2. "foo": "World",
  3. "rec": {
  4. "recNo": 26,
  5. "recType": "rtBar"
  6. },
  7. "records": [
  8. {
  9. "recNo": 20,
  10. "recType": "rtBar"
  11. },
  12. {
  13. "recNo": 21,
  14. "recType": "rtFoo"
  15. },
  16. {
  17. "recNo": 22,
  18. "recType": "rtBar"
  19. },
  20. {
  21. "recNo": 25,
  22. "recType": "rtFoo"
  23. }
  24. ],
  25. "value_b": true
  26. }
  1. procedure test();
  2. var
  3. myObj: TMyObject;
  4. begin
  5. myObj := DSON().fromJson<TMyObject>(json);
  6. Writeln(myObj.foo);
  7. Writeln(myObj.rec.recNo);
  8. Writeln(Length(myObj.records));
  9. Writeln(myObj.records[2].recNo);
  10. end;

Result

  1. World
  2. 26
  3. 4
  4. 22

Update 11.09.2018

Add map support

  1. TMapItem = record
  2. boolVal: Boolean;
  3. doubleVal: Double;
  4. end;
  5. TTestMap = record
  6. stringVal: String;
  7. intVal: Integer;
  8. mapVal: TMap<string, TMapItem>
  9. end;

Supported type:
Integer, Enumeration, Float, String, Class, Record, Array, TMap

Use only public or published fields/property