我編寫了一些代碼(其餘服務器),這些代碼以JSON格式爲我生成數據。當我在PHP中使用它時,它工作正常,JSON有效,一切正常。當我在Delphi中使用它時沒有任何效果。無法使用system.json反序列化有效的JSON
當我從網上搜索,我發現:
desearilizing JSON using SuperObject
但是該方法對我來說將返回空字符串。
我想使用該JSON元素作爲數組(例如JSONValue.items [i])。
我正在使用Delphi XE7 System.JSON並且不想使用superobject或任何其他庫。
如何將它用作數組?
我貼我的代碼生成JSON:
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;
這是結果:
{
"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"]
]
}]
}
目前還不清楚你在這裏問什麼。你似乎在說,你有一個問題需要消費這段代碼產生的JSON,並且它產生了被PHP正確使用的JSON,這意味着生產者代碼本身沒有任何問題。你真的需要發佈你的* consumer *代碼,並更清楚地解釋它是如何以及爲什麼它不適合你。 – Deltics
json的選擇結構很奇怪。 –
我同意Rufo爵士 - 選擇的結構非常奇怪,最低級別缺少JSON對會導致問題。 – Dsm