Ich versuche, das Ergebnis der Datasnap Datasnap zu drehen.Drehen eines Datensatzes JSON Ergebnis in Datennap (Delphi 10)
Beispiel: Das ist, was ich
{"result":[{"table":[["REG_KEY",1,0,0,2,3,0,0,false,false,0,false,false],["REG_NAME",1,1,0,128,129,0,0,false,false,0,false,false]],"REG_KEY":["01","02"],"REG_NAME":["BALEARES","CANARIAS"]}]}
bekommen Und ich will es zu transformieren, um nur:
[{"REG_KEY":"01","REG_NAME":"BALEARES"},{"REG_KEY":"02","REG_NAME":"CANARIAS"}]
Ich beabsichtige, sie zu transformieren im DSHTTPWebDispatcher.FormatResult, aber ist mein erstes Mal mit DataSnap/REST/JSON und ich habe Probleme zu verstehen, die Klassen JSON-Werte zu verwalten.
Es sollte wie folgt sein:
procedure TWebModule1.DSHTTPWebDispatcher1FormatResult(Sender: TObject; var ResultVal: TJSONValue; const Command: TDBXCommand; var Handled: Boolean);
var
Aux: TJSONObject;
NewResult: TJSONObject;
Row: TJSONObject;
NumField, NumRow, MaxFields, MaxRows: integer;
begin
Handled := True;
NewResult := TJSONArray.Create;
Aux := TJSONArray(ResultVal).Get(0); // I get the result as an Object instead of an Array
MaxFields := Aux.Pairs.Count - 1; // I ignore the Pair 0 because it only contains the Dataset structure
MaxRows := TJSONArray(1).Count;
for NumRow := 0 to MaxRows - 1 do begin
Row := TJSONObject.Create;
for NumField := 1 to MaxFields do begin
Row.AddPair(Aux.Pairs[NumField].JsonString,
TJSONArray(Aux.Pairs[NumField].JsonValue).Get(NumRow));
end;
Aux.Add(Row);
end;
Aux.Free;
ResultVal.Free;
ResultVal := NewResult;
end;
Aber die TJSONObject keinen Pairs.Count Methode zu wissen, wie viele Paare enthält, und die TJSONArray nicht über und Methode In den direkt hinzufügen ein neues Objekt. Ich bin mir ziemlich sicher, dass dieser Code viele andere Fehler hat.
Kann mir jemand sagen, wie ich es beheben kann?
Danke, aber das ist nicht genau das, was ich gesucht habe. Ich muss das Ergebnis rotieren, indem ich jeden Datensatz als Elemente des Hauptarrays erhalte, während Datasnap jedes Feld als anderes Array mit seinen Werten zurückgibt: [{"REG_KEY": "01", "REG_NAME": "BALEARES"}, {"REG_KEY": "02", "REG_NAME": "CANARIAS"}] anstelle von: ["REG_KEY": ["01", "02"], "REG_NAME": ["BALEARES", " CANARIAS "]}] –