JSON形式のデータを生成するコード(残りのサーバー)を記述します。私はPHPでそれを使用するとうまくいきます、JSONは有効です、すべてが大丈夫です。私がDelphiで使うと何も動かない。私はインターネットを検索するとsystem.jsonを使用して有効なJSONを逆シリアル化できません
は、私が見つかりました:
desearilizing JSON using SuperObject
が、その方法は私のために空の文字列を返します。
JSON要素を配列(JSONValue.items [i]など)として使用したいと考えています。
私はDelphi XE7 System.JSONを使用しており、スーパーオブジェクトや他のライブラリを使用したくありません。
どのように配列として使用できますか?
私は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を生成するという問題があり、プロデューサコード自体に問題がないことを示唆しているようです。あなたは本当にあなたの*消費者*コードを掲示し、それがどうやってあなたのために働いていないのかをより明確に説明する必要があります。 – Deltics
jsonの選択された構造は非常に奇妙です。 –
私はSir Rufoに同意します。選択された構造は非常に奇妙であり、最も低いレベルでJSONペアが存在しないと問題が発生します。 – Dsm