123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- { ***************************************************************************
- Copyright (c) 2016-2019 Kike Pérez
- Unit : Quick.Json.fpc.Compatibility (only freepascal)
- Description : Delphi Json compatibility functions
- Author : Kike Pérez
- Version : 1.4
- Created : 09/03/2018
- Modified : 27/05/2019
- This file is part of QuickLib: https://github.com/exilon/QuickLib
- ***************************************************************************
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- *************************************************************************** }
- unit Quick.Json.fpc.Compatibility;
- {$i QuickLib.inc}
- interface
- uses
- Classes,
- SysUtils,
- fpjson,
- jsonparser;
- type
- TJsonPair = class
- private
- fJsonString : string;
- fJsonValue : TJsonData;
- public
- constructor Create(const aName : string; aValue : TJsonData);
- property JsonString : string read fJsonString write fJsonString;
- property JsonValue : TJsonData read fJsonValue write fJsonValue;
- end;
- { TJsonArray }
- TJsonArray = class(fpjson.TJSONArray)
- public
- procedure AddElement(aValue : TJsonData);
- end;
- { TJsonObject }
- TJsonObject = class(fpjson.TJsonObject)
- private
- function GetPair(Index : Integer): TJsonPair;
- public
- procedure AddPair(aValue : TJsonPair); overload;
- procedure AddPair(const aName : TJsonStringType; aValue : TJsonData); overload;
- class function ParseJSONValue(const JSON: string; const UseUTF8: Boolean = True): TJSONData;
- function GetValue(const aName : string) : TJsonData;
- function ToJson : TJSONStringType;
- property Pairs[Index : Integer] : TJsonPair read GetPair; default;
- end;
- TJsonValue = TJsonData;
- TJsonNumber = class(fpjson.TJsonIntegerNumber)
- public
- constructor Create(aValue : Integer); overload;
- constructor Create(aValue : Extended); overload;
- end;
- TJsonString = class(fpjson.TJsonString)
- public
- constructor Create(const aValue : string); overload;
- end;
- TJsonBool = class(fpjson.TJSONBoolean)
- public
- constructor Create(aValue : Boolean);
- end;
- implementation
- { TJsonArray }
- procedure TJsonArray.AddElement(aValue: TJsonData);
- begin
- Add(aValue);
- end;
- function TJsonObject.GetPair(Index : Integer): TJsonPair;
- begin
- Result := TJsonPair.Create(Self.Names[Index],Self.Items[Index]);
- end;
- procedure TJsonObject.AddPair(aValue : TJsonPair);
- begin
- Add(aValue.JsonString,aValue.JsonValue);
- end;
- procedure TJsonObject.AddPair(const aName: TJsonStringType; aValue: TJsonData);
- begin
- Add(aName,aValue);
- end;
- class function TJsonObject.ParseJSONValue(const JSON: string; const UseUTF8: Boolean = True): TJSONData;
- begin
- Result := GetJson(JSON,UseUTF8);
- end;
- function TJsonObject.ToJson : TJSONStringType;
- begin
- try
- Result := AsJson;
- except
- raise Exception.Create('Json not valid');
- end;
- end;
- function TJsonObject.GetValue(const aName : string) : TJsonData;
- begin
- Result := Find(aName);
- end;
- constructor TJsonPair.Create(const aName : string; aValue : TJsonData);
- begin
- fJsonString := aName;
- fJsonValue := aValue;
- end;
- constructor TJsonNumber.Create(aValue : Integer);
- begin
- inherited Create(aValue);
- end;
- constructor TJsonNumber.Create(aValue : Extended);
- begin
- Create(aValue);
- end;
- constructor TJsonBool.Create(aValue : Boolean);
- begin
- inherited Create(aValue);
- end;
- constructor TJsonString.Create(const aValue : string);
- begin
- inherited Create(aValue);
- end;
- end.
|