Moin @ALL,
also, habs jetzt so (s.u.) gemacht und klappt auch super (s. Anhang).
Bitte nicht über die ausführlichen Kommentare wundern - dient als Lehrstoff. Und falls noch jemand etwas anzumerken hätte - alls her damit.
Tks nochmal..
Delphi-Quellcode:
// json-antwort aufbereiten..
// entspr. objekte erstellen..
StringWriter := TStringWriter.Create();
Writer := TJsonTextWriter.Create(StringWriter);
try
// json-antwort formatiert aufbereiten??
if uglobal.JSON_FORMATIEREN then
Writer.Formatting := TJsonFormatting.Indented;
// beginn json-objekt für tabelle..
Writer.WriteStartObject;
Writer.WritePropertyName('wowarer');
// beginn json-array für tabelle..
Writer.WriteStartArray;
// datensaetze scannen..
dm.qryWoWarer.First; // vorsichtshalber auf ersten ds
// info: diese form des scannens, weil man desöfteren im scanvorgang einen index (i) gebrauchen kann
// alternativ: while NOT dm.qryWoWarer.Eof do begin - dann entfällt "nächster datensaetz"
for var i: integer := 0 to dm.qryWoWarer.RecordCount - 1 do begin
// für jeden ds ein json-objekt erstellen..
// beginn json-objekt..
Writer.WriteStartObject;
// entspr. tabellen-felder mit deren werten in json-objekt..
Writer.WritePropertyName('id');
Writer.WriteValue(dm.qryWoWarer.FieldByName('id').AsInteger);
Writer.WritePropertyName('location');
Writer.WriteValue(dm.qryWoWarer.FieldByName('location').AsString);
// ende json-objekt..
Writer.WriteEndObject;
// nächster datensaetz..
dm.qryWoWarer.Next;
end;
// ende json-array für tabelle..
Writer.WriteEndArray;
// ende json-objekt für tabelle..
Writer.WriteEndObject;
// prot..
if uglobal.OGProtokoll.Protokollieren then begin
uglobal.AddToProtokoll('Anforderung gesendet');
if uglobal.OGProtokoll.ProtokollierenJSONString then begin
// JSON-String formatiert ausgeben..
uglobal.AddToProtokoll('sende:' + sLineBreak + StringWriter.ToString,false,true);
end;
end;
// senden..
// ContentType setzen, damit der client weiss welche art daten..
Response.ContentType := 'text/plain; charset="UTF-8"';
// und, weil webbies... - alles als string liefern..
Response.Content := StringWriter.ToString;
finally
Writer.Free;
StringWriter.Free;
end;