猿问

如何将 Curl 响应转换为 Json 以便我可以在前端使用它?

我有一个使用 curl_multi 发出多个 GET 请求的函数。但是,我不知道如何将响应转换为 JSON,以便我可以在前端访问它。通常我使用 json_decode(),但是,这次它不起作用。也许是因为我试图解码整个字符串数组而不是单个字符串?。目前,前端的响应如下所示:

这是我的功能:


public function getVisited($username){

    $user = User::where('username', $username)->first();

    $visitedPlaces = $user->visitedPlaces;

    $finalPlaces = [];


    foreach ($visitedPlaces as $visitedPlace) {

        $url = "https://maps.googleapis.com/maps/api/place/details/json?placeid=" . $visitedPlace->place_id . "&key=AIzaSyDQ64lYvtaYYYNWxLzkppdN-n0LulMOf4Y";

        array_push($finalPlaces, $url);

    }


    $result = array();

    $curly = array();

    $mh = curl_multi_init();


    foreach ($finalPlaces as $id => $d) {

        $curly[$id] = curl_init();


        $url = $d;

        curl_setopt($curly[$id], CURLOPT_URL,            $url);

        curl_setopt($curly[$id], CURLOPT_HEADER,         0);

        curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);

        curl_setopt($curly[$id], CURLOPT_SSL_VERIFYPEER, 0); // Skip SSL Verification


        curl_multi_add_handle($mh, $curly[$id]);

    }


    $running = null;

    do {

        curl_multi_exec($mh, $running);

    } while($running > 0);


    foreach($curly as $id => $c) {

        $result[$id] = curl_multi_getcontent($c);

        curl_multi_remove_handle($mh, $c);

    }


    curl_multi_close($mh);


    return response()->json([

        'sights' => $result

    ], 201);

}


小怪兽爱吃肉
浏览 606回答 1
1回答

慕仙森

如果您期望来自 json 字符串,curl_multi_getcontent($c)那么您应该对其进行解码:$result[$id] = json_decode(curl_multi_getcontent($c));然后它应该在响应中适当地编码。
随时随地看视频慕课网APP
我要回答