2013-03-08 110 views
0

我使用TIdHTTP從PHP調用中獲取JSON數據。我期待使用TJSONObject,但無法解決如何將其用於此目的。 XE3幫助中沒有例子。提取/解析從PHP返回的JSON數據

樣品JSON數據

[{"fleet_id":"2","fleet":"EMB195"},{"fleet_id":"3","fleet":"EMB175"},{"fleet_id"‌:"1","fleet":"DHC84-400Q"}] 

我敢肯定,這是簡單的,但如何!

謝謝。

+0

這相當['詳細文章]](http://www.sdn.nl/SDN/Artikelen/tabid/58/view/View/ArticleID/3230/Reading-and-Writing-JSON-with-Delphi。 aspx)可能會幫助你開始。 – TLama 2013-03-08 18:55:41

+0

歡呼聲 - 有用的文章,但仍然不能解決如何分配'隨機'json數據到TJSONObject – 2013-03-08 19:08:30

+0

你的意思是'任何'json數據,即任何類型? – 2013-03-08 19:36:58

回答

3

使用TJsonObject.ParseJsonValue將輸入字符串轉換成JSON值:

var 
    val: TJsonValue; 

s := '[{"fleet_id":"2","fleet":"EMB195"},{"fleet_id":"3","fleet":"EMB175"},{"fleet_id"‌:"1","fleet":"DHC84-400Q"}]'; 
val := TJsonObject.ParseJsonValue(s); 

在這種情況下,JSON恰好代表了一個數組,這樣你就可以將其類型強制轉換爲:

var 
    arr: TJsonArray; 

arr := val as TJsonArray; 

您可以使用Get訪問數組的元素,並將結果輸入到TJsonObject

var 
    i: Integer; 
    elem: TJsonObject; 

for i := 0 to Pred(arr.Size) do begin 
    elem := arr.Get(i) as TJsonObject; 
end; 

要檢查對象的屬性,你可以使用Get方法,它返回一個TJsonPair持有的名稱和值。

+0

羅布,工作一種享受!非常感謝。 – 2013-03-09 12:31:35