2014-09-30 2 views
1

У меня есть объект JSON, как показано ниже, который хранится в переменной под названием $product.Чтение данных JSON в PHP

{"id":30} 

При попытке доступа к сохраненному значению, хотя, я получаю следующее сообщение об ошибке:

Trying to get property of non-object

Вот что я делаю:

echo $product->id; 

Alright люди, извините за дикая гусиная погоня. Очевидно, $products был массивом, а не данными JSON, что действительно странно, потому что print_r($products) и echo $products дали разные результаты.

Результаты можно посмотреть здесь:

results

Я использую Laravel, и обычно Laravel возвращает хороший объект JSON из запроса SQL, я должен был что-то изменилось где-то, что, почему это произошло , Благодарю.

+0

Вы тестируете json_decode() после вызова json_encode() - $ obj = json_decode (json_encode ($ product)); echo $ obj-> id; –

ответ

0

Вы можете использовать json_decode к вашему объекту.

Takes a JSON encoded string and converts it into a PHP variable.

Использование:

print_r(json_decode($obj, true)); 
var_dump(json_decode($obj)); 
+0

@sarovarc попробуйте этот 'print_r (json_decode ($ product, true));' –

+0

Дайте следующую ошибку: Преобразование строки в строку – sarovarc

+0

@sarovarc try 'print_r ($ product);' –

1

Попробуйте следующие json_decode функции

$product = '{"id":30}'; 
$t = json_decode($product); 
echo $t->id;exit; 
+0

Не работает, дает мне ошибку «Объект класса stdClass не может быть преобразован в строку» – sarovarc

+0

Если я попробую json_decode ($ product, true); то я получаю следующую ошибку: «Преобразование массива в строку» – sarovarc

+0

не нужно передавать true в функции json_decode –

0

Попытка ниже образца:

<?php 
$product = '{"id": 30}'; 

$obj = json_decode(json_encode($product)); // or json_decode(json_encode($product), true); 
echo $obj->{'id'}; // or echo $obj->id 
?> 
0

Первые примеры работают для меня, убедитесь, что PHP поддерживает функцию json_decode(). Или вы могли бы попробовать это:

$product = '{"id":30}'; 
$t = json_decode($product, true); 
echo $t["id"]; 

Передача истинного значения преобразует его в массив вместо.

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