Как показать данные из массива JSON, преобразованного в строку - PullRequest
0 голосов
/ 07 февраля 2019

Я хочу показать некоторые данные из строки JSON, превратив эту строку в массив

Я использовал json_decode для преобразования строки json в массив.Вот моя строка json (dd):

"{"title":"W3Schools Online Web Tutorials","description":"w3schools.com","image":"http:\/\/www.w3schools.com\/images\/colorpicker.png","url":"https:\/\/www.w3schools.com\/"}"

Когда я возвращаю массив или dd массив, это показывает мне массив, как я задумал (dd):

array:4 [▼"title" => "W3Schools Online Web Tutorials""description" => "w3schools.com""image" => "http://www.w3schools.com/images/colorpicker.png""url" => "https://www.w3schools.com/"]

Но потом, когда я пытаюсь показать $myarray->title, это выдает мне ошибку:

Попытка получить свойство 'title' не-объекта

public function showDetail(Request $request){
    $rUrl = "http://api.linkpreview.net/?key=5c59318d927ca5c5b481c89a6c18a0a2623a61d568502&q=".$request->body;
    $json_string= file_get_contents($rUrl);
    $data= json_decode($json_string,true);
    return view('showIn')->with('data', $data);


}

Ожидаемый результат : веб-учебники W3Schools Online
Фактический результат : Ошибка: попытка получить свойство 'title' не-объекта

Ответы [ 3 ]

0 голосов
/ 07 февраля 2019

Вы должны использовать ответ json вместо обратного представления ('showIn') -> with ('data', $ data);

return response()->json($data);

, но если вы хотите напечатать json в своем представлении, вы можетепросто сделайте

$rUrl = "http://api.linkpreview.net/?key=5c59318d927ca5c5b481c89a6c18a0a2623a61d568502&q=".$request->body;
$json_string= file_get_contents($rUrl);
return view('showIn')->with('json', $json_string);

В своем шаблоне лезвия используйте

{{ $json }}
0 голосов
/ 07 февраля 2019

Ваша строка JSON в двойных кавычках для одного, используйте одинарные кавычки.

Во-вторых, $myarray->title - это то, что вы сделали бы, если бы работали с объектом.Поскольку вы работаете с массивом, сделайте это как $myarray['title']

Это будет работать.

$myjson = '{"title": "W3Schools Online Web Tutorials", "description":"w3schools.com","image":"http:\/\/www.w3schools.com\/images\/colorpicker.png","url":"https:\/\/www.w3schools.com\/"}';

$myarray = json_decode($myjson, true);

echo $myarray['title'];
0 голосов
/ 07 февраля 2019

Это массив, поэтому вы должны иметь к нему доступ следующим образом $data['title'];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...