2013-03-08 2 views
0

Я получаю данные JSON с PHP-вызова с использованием TIdHTTP. Я ожидаю использовать TJSONObject, но не могу решить, как использовать его для этой цели. И примеров в XE3 нет.Извлечение/анализ данных, возвращаемых как JSON из PHP

Пример 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

+0

Cheers - полезная статья, но до сих пор не удается определить, как назначить «случайные» json-данные TJSONObject –

+0

Вы имеете в виду «any» json data, т. Е. Любой тип? –

ответ

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

Роб, работает! Спасибо. –

Смежные вопросы