Я пытаюсь добавить несколько маркеров на карту Google и нашел способ сделать это здесь. Теперь у меня есть ответ массива json от сервера, как показано ниже.
// function to get user names and addresses
public function getUserAddresses(Request $request)
{
$users = User::where('address', '!=', null)->select('name', 'address')->get(); //this is a laravel query
$userData = [];
foreach ($users as $user) {
$userData[$user->name] = $user->address;
}
return $userData;
}
Этот код выше дает мне ответ ниже.
{
"plumber1": "-1.2523238641713191,36.87899683074249",
"plumber2": "-1.2192245641713191,36.87899687428849",
"allan plumber": "-1.2192238641713191,36.87899683068849"
}
но для меня, чтобы использовать эти данные, они должны быть в этом формате, как показано ниже в javascript.
[
["plumber1", -1.2523238641713191,36.87899683074249],
["plumber2", -1.2192245641713191,36.87899687428849],
["allan plumber", -1.2192238641713191,36.87899683068849]
];
Вы хотите, чтобы результат был исходным объектом javascript или строкой json?
как объект javascript..но без кавычек..
@Eddie varlocations = Object.entries(data); я даже пробовал это, но когда console.info(locations); он отображается с кавычками.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте json_decode
ini_set( 'precision', 17 );
$jsonToArray = json_decode($json, JSON_NUMERIC_CHECK);
json_decode не работает для массивов..
Вы можете использовать этот php-код
$str = '{
"plumber1": "-1.2523238641713191,36.87899683074249",
"plumber2": "-1.2192245641713191,36.87899687428849",
"allan plumber": "-1.2192238641713191,36.87899683068849"
}';
$array =json_decode($str);
$new_array = [];
foreach ($array as $key => $value) {
$coordinates = explode(',',$value);
$coordinate1 = (float) $coordinates[0];
$coordinate2 = (float) $coordinates[1];
$new_array[] = array($key,$coordinate1,$coordinate2);
}
print_r($new_array);
ВЫХОД
Array
(
[0] => Array
(
[0] => plumber1
[1] => -1.25232386
[2] => 36.878996830742
)
[1] => Array
(
[0] => plumber2
[1] => -1.2192245641713
[2] => 36.878996874288
)
[2] => Array
(
[0] => allan plumber
[1] => -1.2192238641713
[2] => 36.878996830688
)
)
Вы также можете проверить демо здесь
Вот версия Javascript
<script type = "text/javascript">
var str = `{
"plumber1": "-1.2523238641713191,36.87899683074249",
"plumber2": "-1.2192245641713191,36.87899687428849",
"allan plumber": "-1.2192238641713191,36.87899683068849"
}`;
var obj = JSON.parse(str);
var array = [];
var counter =0;
for (var key in obj) {
var myarr = obj[key].split(",");
array[counter] = [key, parseFloat(myarr[0]), parseFloat(myarr[1])];
counter++
}
console.info(array);
</script>
Спасибо, теперь массив JSON, из которого я хочу удалить цитаты, является ответом на запрос на получение. Это означает, что он является динамическим, а не строковым.. так что из вашего ответа. здесь -> $array =json_decode($str); я должен поставить ответ прямо .. не строку ..
и я просил изменить ответ в javascript..
Я обновил свой ответ. Теперь он даст вам плавающие числа вместо строк.
Я загрузил обе версии, такие как javascript и php. Теперь можно наслаждаться... :)
Мой Бог!!! Большое вам спасибо... @Zain Farooq
Object.entries(obj)?