2015-07-16 2 views
2

В следующем формате JSON, я хочу получать все телефонные клиентов и хранить в массиве:Как итерацию JSON в PHP

{ 
    "MetaInformation":{ 
     "@TotalResources":1, 
     "@TotalPages":1, 
     "@CurrentPage":1 
    }, 
    "Customers":[ 
     { 
     "@url":"https:\/\/URL/customers\/1", 
     "Address1":"Mumbai", 
     "City":"Mumbai", 
     "CustomerNumber":"1", 
     "Email":"[email protected]", 
     "Name":"Saurabh Pradhan", 
     "OrganisationNumber":"", 
     "Phone":"91xxx", 
     "ZipCode":"45153" 
     } 
    ] 
} 

Я попытался с помощью следующих, но он продолжает бросать мне ошибку «Попытка получить имущество of non-object in ":

$customer_json = json_decode($api->getAllCustomers());  
$customer_json->Customers[0]->Phone; 
+4

Ваш код должен работать нормально. Пробовали ли вы распечатать содержимое '$ customer_json', используя' print_r ($ customer_json); '. Вы уверены, что '$ api-> getAllCustomers()' действительно возвращает json и еще не декодированные данные json? – Cyclonecode

+0

@Cyclone Спасибо за предложение распечатать данные. Как оказалось, при печати $ customer_json было null. Я снова проверил код метода getAllCustomers и понял проблему с возвратом. Он работает сейчас. – Saurabh

+0

Рад, что вы решили это =) – Cyclonecode

ответ

-1

Проблема в том, что представление PHP объекта JSON не является объектом. Вместо этого PHP использует ассоциативные массивы. Для удобного использования поведения:

$customer_json = json_decode($api->getAllCustomers(), true); 
$customer_json['Customers'][0]['Phone']; 
+1

Но по умолчанию второй аргумент 'json_decode()' установлен в false, который, в свою очередь, будет декодировать его как объекты. – Cyclonecode

+0

Легче итератировать массив, чем объект. – pamelus

+1

Почему? Тем не менее, это не решение реальной проблемы. Поскольку '$ customer_json-> Клиенты [0] -> Телефон должен быть действительным. – Cyclonecode

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