【问题标题】:Distance Matrix results距离矩阵结果
【发布时间】:2016-12-19 19:09:24
【问题描述】:

我很难将 DistanceMatrix API 结果转换为 JSON 格式。

这是 $response 的 var_dump(我在 Laravel 5.1 中使用 Ivory\googlempas 插件)

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 数组中返回它?

【问题讨论】:

    标签: php json laravel google-maps-api-3 google-distancematrix-api


    【解决方案1】:

    尝试使用类型提示:

    $json = json_encode( (array)$response );
    

    更新:

    这有点老套,但会解决您的问题。
    考虑到您已在 $json 变量中将对象编码为 json,您可以使用 str_replace() 方法替换不需要的 /u0000 即空字符。

    $json = str_replace('\\u0000', '',$json);
    

    【讨论】:

    • ["{\"\\u0000*\\u0000text\":\"572 km\",\"\\u0000*\\u0000value\":572343}"] 我收到了这个回复与你的建议。现在我如何使用 572343 值?
    • 你想在哪里使用这个json。在你的前端?
    • 是的,我现在已将其转换为字符串并输出:["O:38:\"Ivory\\GoogleMap\\Services\\Base\\Distance\":2:{s: 7:\"\u0000*\u0000text\";s:6:\"572 km\";s:8:\"\u0000*\u0000value\";i:572343;}"] 现在需要获取使用在前端 572343 值
    • 上一个呢
    • 现在得到了这个:["O:37:\"Ivory\\GoogleMap\\Service\\Base\\Distance\":2:{s:43:\"\u0000Ivory\\GoogleMap \\Service\\Base\\Distance\u0000text\";s:6:\"572 km\";s:44:\"\u0000Ivory\\GoogleMap\\Service\\Base\\Distance\u0000value\"; i:572343;}"] 我只需要获取 572343