You can find a working example in XData demo XDataFireDacSqlServer in folder demos\firedac-sql. Here is a snippet:
function TCustomerService.GetCustomer(Id: Integer): TCustomer;
begin
Query.SQL.Text := 'SELECT * FROM CUSTOMERS WHERE ID = :id';
Query.ParamByName('id').AsInteger := Id;
Query.Open;
if Query.IsEmpty then Exit(nil);
Result := TCustomer.Create;
TXDataOperationContext.Current.Handler.ManagedObjects.Add(Result);
Result.Id := Query.FieldByName('ID').AsInteger;
Result.Name := Query.FieldByName('NAME').AsString;
Result.Country := Query.FieldByName('COUNTRY').AsString;
end;
Another example:
IResultSet := IStatement.ExecuteQuery;
ResultArray := TJSONArray.Create;
TXDataOperationContext.Current.Handler.ManagedObjects.Add(ResultArray);
while IResultSet.Next do
begin
ResultObject := TJSONObject.Create;
ResultObject.AddPair('Firstname', IResultSet.GetFieldValue('Firstname') );
ResultObject.AddPair('Lasttname', IResultSet.GetFieldValue('Lastname') );
ResultArray.AddElement(ResultObject);
end;
Result := ResultArray;
No, they are different. Use the native Delphi one from System.JSON, which you can find plenty of documentation and examples by the way. The one in WEBLib.JSON is just for TMS Web Core applications.