Ich schreibe einen Code (Rest-Server), die für mich Daten im JSON-Format erzeugen. Wenn ich es in PHP verwende, funktioniert es gut, JSON ist gültig, alles ist in Ordnung. Wenn ich es in Delphi verwende, funktioniert nichts.Kann JSON nicht mit ISO.desktop.json deserialisieren
Wenn ich Internet-Suche fand ich:
desearilizing JSON using SuperObject
aber das Methode gibt leere Strings für mich.
Ich möchte diese JSON-Elemente als Array verwenden (zB JSONValue.items [i]).
Ich benutze Delphi XE7 System.JSON und möchte nicht Superobject oder andere Bibliotheken verwenden.
Wie verwenden Sie es als Array?
ich einfügen meinen Code, JSON erzeugt:
var
qry: TfdQuery;
FieldsObj: TJSONObject;
FieldNameArray: TJSONArray;
I: Integer;
DataObj: TJSONObject;
DataRows: TJSONArray;
RowFields: TJSONArray;
tablename:string;
begin
tablename:='produkt';
qry := TfdQuery.Create(Self);
qry.SQL.Text := 'select * from produkt where (id ='''+ProductID+''')';
qry.Connection := FDConnection1;
qry.Open;
FieldsObj := TJSONObject.Create;
FieldNameArray := TJSONArray.Create;
for I := 0 to qry.FieldCount - 1 do
FieldNameArray.Add(qry.Fields[I].FieldName);
FieldsObj.AddPair(TableName, FieldNameArray);
DataObj := TJSONObject.Create;
DataRows := TJSONArray.Create;
qry.First;
while not qry.Eof do
begin
RowFields := TJSONArray.Create;
for I := 0 to qry.FieldCount - 1 do
RowFields.Add(qry.Fields[I].AsString);
DataRows.Add(RowFields);
qry.Next;
end;
DataObj.AddPair('data', DataRows);
Result := TJSONArray.Create(FieldsObj, DataObj);
qry.Free;
Und das ist das Ergebnis:
{
"ProductID": "1",
"result": [{
"produkt": ["id", "parent_id", "full_name", "opcja_1", "opcja_2", "opcja_3", "opcja_4", "opcja_5", "opcja_6", "opcja_7", "opcja_8", "opcja_9", "opcja_10", "opcja_11", "opcja_12", "field_address1", "field_address2", "quantity", "opis", "zdjecie1", "zdjecie2", "zdjecie3", "samples", "link_stable0", "link_stable1", "link_stable2", "price1", "price2", "price3"]
}, {
"data": [
["1", "1", "name", "1", "1", "1", "1", "0", "0", "0", "0", "0", "0", "0", "12", "10", "20", "1,2", "description of product", "http://www.vphosted.com/e6=0", "photo link2", "photo link 3", "sample project file link", "link option", "10", "link", "10", "link", "10"]
]
}]
}
Es ist nicht klar, was Sie hier fragen. Sie scheinen zu sagen, dass Sie ein Problem damit haben, den JSON zu konsumieren, den dieser Code erzeugt, und dass er JSON erzeugt, der von PHP korrekt konsumiert wird, was darauf hindeutet, dass mit dem Erzeugercode selbst nichts falsch ist. Sie müssen wirklich Ihren * Consumer * -Code veröffentlichen und klarer erklären, wie und warum es nicht für Sie funktioniert. – Deltics
Die gewählte Struktur des JSON ist sehr merkwürdig. –
Ich stimme Sir Rufo zu - die gewählte Struktur ist sehr seltsam und das Fehlen von JSON-Paaren auf der niedrigsten Ebene wird Probleme verursachen. – Dsm