Advertisement
Guest User

Untitled

a guest
Jan 4th, 2023
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.45 KB | None | 0 0
  1. function TGraphQLJson.ASTValueToJSON(Value: TASTValue): TJsonValue;
  2. var
  3.   I: Integer;
  4. begin
  5.   Result := nil;
  6.   try
  7.     if Value is TASTListValue then
  8.     begin
  9.       Result := TJsonArray.Create;
  10.       for I := 0 to TASTListValue(Value).Count - 1  do
  11.         TJsonArray(Result).AddElement(ASTValueToJSON(TASTListValue(Value).Items[I]));
  12.     end;
  13.  
  14.     if Value is TASTObjectValue then
  15.     begin
  16.       Result := TJsonObject.Create;
  17.       for I := 0 to TASTObjectValue(Value).Count - 1 do
  18.         TJsonObject(Result).AddPair(TASTObjectValue(Value).Items[I].Name, ASTValueToJSON(TASTObjectValue(Value).Items[I].Value));
  19.     end;
  20.  
  21.  
  22.     if Value is TASTStringValue then
  23.       Result := TJsonString.Create(TASTStringValue(Value).Value);
  24.  
  25.     if Value is TASTIntValue then
  26.       Result := TJsonNumber.Create(TASTIntValue(Value).Value);
  27.  
  28.     if Value is TASTNullValue then
  29.       Result := TJsonString.Create;
  30.  
  31.     if Value is TASTBooleanValue then
  32.       Result := TJsonBool.Create(TASTBooleanValue(Value).Value <> 'false');
  33.  
  34.     if Value is TASTFloatValue then
  35.       Result := TJsonNumber.Create(TASTFloatValue(Value).Value);
  36.   except
  37.     Result.Free;
  38.     raise;
  39.   end;
  40. end;
  41.  
  42. constructor TGraphQLJson.Create;
  43. begin
  44.   inherited Create('JSON');
  45. end;
  46.  
  47. function TGraphQLJson.ParseLiteral(Value: TASTValue): TValue;
  48. var
  49.   JsonValue: TJsonValue;
  50. begin
  51.   JsonValue := ASTValueToJSON(Value);
  52.   Result := TValue.From<TJsonValue>(JsonValue);
  53. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement