Browse Source

AnsiString to String - UJSONFunctions

PascalCoin 6 years ago
parent
commit
14de9cec87
1 changed files with 27 additions and 27 deletions
  1. 27 27
      src/libraries/pascalcoin/UJSONFunctions.pas

+ 27 - 27
src/libraries/pascalcoin/UJSONFunctions.pas

@@ -46,14 +46,14 @@ Type
   private
     FParent : TPCJSONData;
   protected
-    Function ToJSONFormatted(pretty:Boolean;Const prefix : AnsiString) : AnsiString; virtual; abstract;
+    Function ToJSONFormatted(pretty:Boolean;Const prefix : String) : String; virtual; abstract;
   public
     Constructor Create; virtual;
     Destructor Destroy; override;
     Class Function ParseJSONValue(Const JSONObject : String) : TPCJSONData; overload;
     Class Function ParseJSONValue(Const JSONObject : TBytes) : TPCJSONData; overload;
     Class Function _GetCount : Integer;
-    Function ToJSON(pretty : Boolean) : AnsiString;
+    Function ToJSON(pretty : Boolean) : String;
     Procedure SaveToStream(Stream : TStream);
     Procedure Assign(PCJSONData : TPCJSONData);
   End;
@@ -69,7 +69,7 @@ Type
     FValue: Variant;
     procedure SetValue(const Value: Variant);
   protected
-    Function ToJSONFormatted(pretty:Boolean;const prefix : AnsiString) : AnsiString; override;
+    Function ToJSONFormatted(pretty:Boolean;const prefix : String) : String; override;
   public
     Constructor Create; override;
     Constructor CreateFromJSONValue(JSONValue : TJSONValue);
@@ -92,7 +92,7 @@ Type
     FFreeValue : Boolean;
     procedure SetValue(const Value: TPCJSONData);
   protected
-    Function ToJSONFormatted(pretty:Boolean;const prefix : AnsiString) : AnsiString; override;
+    Function ToJSONFormatted(pretty:Boolean;const prefix : String) : String; override;
   public
     Constructor Create(AName : String);
     Destructor Destroy; override;
@@ -128,7 +128,7 @@ Type
     Procedure GrowToIndex(index : Integer);
     function GetItemOfType(Index: Integer; DataClass:TPCJSONDataClass): TPCJSONData;
   protected
-    Function ToJSONFormatted(pretty:Boolean;const prefix : AnsiString) : AnsiString; override;
+    Function ToJSONFormatted(pretty:Boolean;const prefix : String) : String; override;
   public
     Constructor Create; override;
     Constructor CreateFromJSONArray(JSONArray : TJSONArray);
@@ -145,7 +145,7 @@ Type
     Function GetIndexOrCreateName(Name : String) : Integer;
     Function GetByName(Name : String) : TPCJSONNameValue;
   protected
-    Function ToJSONFormatted(pretty:Boolean;const prefix : AnsiString) : AnsiString; override;
+    Function ToJSONFormatted(pretty:Boolean;const prefix : String) : String; override;
     Procedure CheckCanInsert(Index:Integer; PCJSONData:TPCJSONData); override;
     Procedure CheckValidName(Name : String);
   public
@@ -178,30 +178,30 @@ Type
 implementation
 
 Function UTF8JSONEncode(plainTxt : String; includeSeparator : Boolean) : String;
-Var ws : WideString;
+Var ws : String;
   i : Integer;
 Begin
    ws := UTF8Encode(plainTxt);
    {ALERT:
     UTF8Encode function deletes last char if equal to #0, so we put it manually
     }
-   if copy(plainTxt,length(plainTxt),1)=#0 then ws := ws + #0;
-        i := 1;
+   if plainTxt.Substring(Length(plainTxt)-1,1)=#0 then  ws := ws + #0;
+        i := 0;
         result := '"';
-        while i <= length(ws) do
+        while i < Length(ws) do
           begin
-            case ws[i] of
-              '/', '\', '"': result := result + '\' + ws[i];
+            case ws.Chars[i] of
+              '/', '\', '"': result := result + '\' + ws.Chars[i];
               #8: result := result + '\b';
               #9: result := result + '\t';
               #10: result := result + '\n';
               #13: result := result + '\r';
               #12: result := result + '\f';
             else
-              if (ord(ws[i]) < 32) Or (ord(ws[i])>122) then
-                result := result + '\u' + inttohex(ord(ws[i]), 4)
+              if (ord(ws.Chars[i]) < 32) Or (ord(ws.Chars[i])>122) then
+                result := result + '\u' + inttohex(ord(ws.Chars[i]), 4)
               else
-                result := result + ws[i];
+                result := result + ws.Chars[i];
             end;
             inc(i);
           end;
@@ -283,7 +283,7 @@ begin
   While (index>=Count) do Insert(Count,TPCJSONVariantValue.Create);
 end;
 
-function TPCJSONArray.ToJSONFormatted(pretty: Boolean; const prefix: AnsiString): AnsiString;
+function TPCJSONArray.ToJSONFormatted(pretty: Boolean; const prefix: String): String;
 Var i : Integer;
 begin
   If pretty then Result := prefix+'['
@@ -535,7 +535,7 @@ begin
   FValue := Value;
 end;
 
-function TPCJSONVariantValue.ToJSONFormatted(pretty: Boolean; const prefix: AnsiString): AnsiString;
+function TPCJSONVariantValue.ToJSONFormatted(pretty: Boolean; const prefix: String): String;
 Var   ds,ts : Char;
 begin
   Case VarType(Value) of
@@ -873,21 +873,21 @@ begin
 end;
 
 function TPCJSONObject.LoadAsStream(ParamName: String; Stream: TStream): Integer;
-Var s : AnsiString;
+Var s : RawByteString;
 begin
   s := AsString(ParamName,'');
   if (s<>'') then begin
-    Stream.Write(s[1],length(s));
+    Stream.Write(s[Low(s)],length(s));
   end;
   Result := Length(s);
 end;
 
 function TPCJSONObject.SaveAsStream(ParamName: String; Stream: TStream): Integer;
-Var s : AnsiString;
+Var s : RawByteString;
 begin
   Stream.Position := 0;
   SetLength(s,Stream.Size);
-  Stream.Read(s[1],Stream.Size);
+  Stream.Read(s[Low(s)],Stream.Size);
   GetAsVariant(ParamName).Value := s;
 end;
 
@@ -903,7 +903,7 @@ begin
   NV.FFreeValue := false;
 end;
 
-function TPCJSONObject.ToJSONFormatted(pretty: Boolean; const prefix: AnsiString): AnsiString;
+function TPCJSONObject.ToJSONFormatted(pretty: Boolean; const prefix: String): String;
 Var i : Integer;
 begin
   if pretty then Result := prefix+'{'
@@ -944,7 +944,7 @@ begin
   FFreeValue := true;
 end;
 
-function TPCJSONNameValue.ToJSONFormatted(pretty: Boolean; const prefix: AnsiString): AnsiString;
+function TPCJSONNameValue.ToJSONFormatted(pretty: Boolean; const prefix: String): String;
 begin
   if pretty then Result := prefix else Result := '';
   Result := Result + UTF8JSONEncode(name,true)+':'+Value.ToJSONFormatted(pretty,prefix+'   ');
@@ -958,7 +958,7 @@ procedure TPCJSONData.Assign(PCJSONData: TPCJSONData);
 Var i : Integer;
   NV : TPCJSONNameValue;
   JSOND : TPCJSONData;
-  s : AnsiString;
+  s : String;
 begin
   if Not Assigned(PCJSONData) then Abort;
   if (PCJSONData is TPCJSONObject) AND (Self is TPCJSONObject) then begin
@@ -1040,10 +1040,10 @@ begin
 end;
 
 procedure TPCJSONData.SaveToStream(Stream: TStream);
-Var s : AnsiString;
+Var s : RawByteString;
 begin
   s := ToJSON(false);
-  Stream.Write(s[1],length(s));
+  Stream.Write(s[Low(s)],Length(s));
 end;
 
 class function TPCJSONData.ParseJSONValue(Const JSONObject: String): TPCJSONData;
@@ -1051,7 +1051,7 @@ begin
   Result := ParseJSONValue( TEncoding.ASCII.GetBytes(JSONObject) );
 end;
 
-function TPCJSONData.ToJSON(pretty: Boolean): AnsiString;
+function TPCJSONData.ToJSON(pretty: Boolean): String;
 begin
   Result := ToJSONFormatted(pretty,'');
 end;