Я хочу показать некоторые данные из строки JSON, сделав эту строку в массив
Я использовал json_decode для преобразования строки json в массив. Вот моя строка JSON (дд):
"{"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
Фактический результат: ошибка: попытка получить свойство title для необъекта
Ваша строка 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'];
Вы должны использовать ответ json вместо return view ('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 }}
Это массив, поэтому вы должны иметь к нему доступ, например: $data['title']
;
Укажите, как вы хотите получить доступ к содержимому массива. например, $ data ['title']
В PHP кодирует JSON формат json_encode ($ json_string, true);
В PHP-декодировании в формате Json json_decode ($ json_string, true);
$myarray["title"]
(также, пожалуйста, держитесь подальше от w3schools и удалите несвязанные теги; это не имеет никакого отношения к javascript, ajax или laravel)$myarray['title']