У меня возникли проблемы с переводом результата API-интерфейса DistanceMatrix в формат JSON.
Это var_dump из $response
(Я использую плагин Ivory \ googlempas в Laravel 5.1)
object(Ivory\GoogleMap\Services\DistanceMatrix\DistanceMatrixResponse)#694 (4) { ["status":protected]=> string(2) "OK" ["destinations":protected]=> array(1) { [0]=> string(12) "Milan, Italy" } ["origins":protected]=> array(1) { [0]=> string(11) "Rome, Italy" } ["rows":protected]=> array(1) { [0]=> object(Ivory\GoogleMap\Services\DistanceMatrix\DistanceMatrixResponseRow)#693 (1) { ["elements":protected]=> array(1) { [0]=> object(Ivory\GoogleMap\Services\DistanceMatrix\DistanceMatrixResponseElement)#692 (3) { ["status":protected]=> string(2) "OK" ["distance":protected]=> object(Ivory\GoogleMap\Services\Base\Distance)#690 (2) { ["text":protected]=> string(6) "572 km" ["value":protected]=> int(572343) } ["duration":protected]=> object(Ivory\GoogleMap\Services\Base\Duration)#691 (2) { ["text":protected]=> string(15) "5 hours 42 mins" ["value":protected]=> int(20517) } } } } } }
Как я могу вернуть его в массиве JSON?
Попробуйте использовать тип подсказки:
$json = json_encode( (array)$response );
Это немного глупо, но решит вашу проблему.
Учитывая, что вы закодировали свой объект в JSON в $json
переменная, которую вы можете использовать str_replace()
способ заменить нежелательное /u0000
то есть нулевые символы.
$json = str_replace('\\u0000', '',$json);
Других решений пока нет …