Bläddra i källkod

Json.Serializer Delphi Rio compatibility

Unknown 6 år sedan
förälder
incheckning
55af7839a4
1 ändrade filer med 20 tillägg och 12 borttagningar
  1. 20 12
      Quick.Json.Serializer.pas

+ 20 - 12
Quick.Json.Serializer.pas

@@ -520,7 +520,11 @@ begin
       case aProperty.PropertyType.TypeKind of
         tkDynArray :
           begin
+            {$IFNDEF FPC}
             jArray := TJSONObject.ParseJSONValue(member.ToJSON) as TJSONArray;
+            {$ELSE}
+            jArray := TJSONArray(TJSONObject.ParseJSONValue(member.ToJSON));
+            {$ENDIF}
             try
               {$IFNDEF FPC}
               aProperty.SetValue(aObject,DeserializeDynArray(aProperty.PropertyType.Handle,Result,jArray));
@@ -1172,21 +1176,25 @@ begin
           try
             pArr := GetDynArrayProp(aObject,aPropertyName);
             TValue.Make(@pArr,propinfo.PropType, rValue);
-            if rValue.IsArray then len := rValue.GetArrayLength;
-            for i := 0 to len - 1 do
+            if rValue.IsArray then
             begin
-              rItemValue := rValue.GetArrayElement(i);
-              jPair := Serialize(aPropertyName,rItemValue);
-              try
-                //jValue := TJsonValue(jPair.JsonValue.Clone);
-                jValue := jPair.JsonValue;
-                jArray.Add(jValue);
-                //jPair.JsonValue.Owned := False;
-              finally
-                jPair.Free;
-                //jValue.Owned := True;
+              len := rValue.GetArrayLength;
+              for i := 0 to len - 1 do
+              begin
+                rItemValue := rValue.GetArrayElement(i);
+                jPair := Serialize(aPropertyName,rItemValue);
+                try
+                  //jValue := TJsonValue(jPair.JsonValue.Clone);
+                  jValue := jPair.JsonValue;
+                  jArray.Add(jValue);
+                  //jPair.JsonValue.Owned := False;
+                finally
+                  jPair.Free;
+                  //jValue.Owned := True;
+                end;
               end;
             end;
+
             Result.JsonValue := jArray;
           finally
             DynArrayClear(pArr,propinfo.PropType);