【问题标题】:How to show data from JSON string converted array如何显示来自 JSON 字符串转换数组的数据
【发布时间】:2019-07-01 04:59:54
【问题描述】:

我想通过将字符串转换为数组来显示 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 时,它给了我错误:

试图获取非对象的属性“标题”

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 在线网络教程
实际结果:错误:试图获取非对象的属性“标题”

【问题讨论】:

  • 试试$myarray["title"](另外,请远离w3schools,去掉不相关的标签;这与javascript、ajax或laravel无关)
  • 这是数组,你可以像对象一样访问,你应该以$myarray['title']访问
  • 指定如何访问数组的内容。例如 $data['title']
  • 我认为你应该使用serializeunserialize php函数,将你的数组放入序列化函数中,就像在你想要的页面中一样,取消序列化它。这是链接stackoverflow.com/questions/8641889/…

标签: javascript php json ajax laravel


【解决方案1】:

你应该使用响应 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 }}

【讨论】:

    【解决方案2】:

    您的 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'];
    

    【讨论】:

      【解决方案3】:

      这是一个数组,所以你应该可以像这样访问它$data['title'];

      【讨论】:

        猜你喜欢
        • 2015-02-14
        • 2018-02-13
        • 1970-01-01
        • 1970-01-01
        • 2017-07-20
        • 2015-04-05
        • 2011-11-22
        • 2022-01-27
        相关资源
        最近更新 更多