Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   распарсить строку (https://javascript.ru/forum/misc/80357-rasparsit-stroku.html)

misha.korolcov 27.05.2020 01:08

распарсить строку
 
Доброе время суток есть строка надо распарсить и
вывести в консоли точки из polygon не знаю как сделать ранее парсил строку JSON.parse но здесь не
не выйдет

"},{"id_gbr":"2","region":"Киев","number":"72","color":"#fccc00","test":"50.49028, 30.59039; 50.48491, 30.58503; 50.43714, 30.62448;50.43885, 30.638;50.48427, 30.61513;50.48435, 30.61558;50.49705, 30.61581","polygon":"[{"lat": 50.490536193901626, "lng": 30.406556772949216}, {"lat": 50.47984084266476, "lng": 30.406929946258515}, {"lat": 50.47078196302313, "lng": 30.406959796813908}, {"lat": 50.459762927731, "lng": 30.40719115930176}, {"lat": 50.45292392846263, "lng": 30.45728290557861}, {"lat": 50.44994631827171, "lng": 30.4758771926422}, {"lat": 50.45739306296883, "lng": 30.48030941610716}, {"lat": 50.46396401821503, "lng": 30.487648547058143}, {"lat": 50.465084495378484, "lng": 30.487091254669167}, {"lat": 50.46862927142601, "lng": 30.489870630294718}, {"lat": 50.47374748220552, "lng": 30.49342754299164}, {"lat": 50.47902899701488, "lng": 30.479904148681612}, {"lat": 50.485619797196634, "lng": 30.470794103759772}, {"lat": 50.49062613468771, "lng": 30.458250831298756}, {"lat": 50.48960708146419, "lng": 30.450326954315074}, {"lat": 50.48733200046696, "lng": 30.443948029724083}, {"lat": 50.48942559218542, "lng": 30.427226507171667}, {"lat": 50.48880683956265, "lng": 30.429551666610678}, {"lat": 50.490763651412536, "lng": 30.415650960502603}]"}]]

Malleys 27.05.2020 02:49

Не знаю, что у вас произошло с JSON, но та часть строки, которую вы предоставили, из неё видно, что значение свойства polygon является строкой в формате JSON, которое можно разобрать и точки вывести на карту.

<body>
<script>
var coords = [{"lat": 50.490536193901626, "lng": 30.406556772949216}, {"lat": 50.47984084266476, "lng": 30.406929946258515}, {"lat": 50.47078196302313, "lng": 30.406959796813908}, {"lat": 50.459762927731, "lng": 30.40719115930176}, {"lat": 50.45292392846263, "lng": 30.45728290557861}, {"lat": 50.44994631827171, "lng": 30.4758771926422}, {"lat": 50.45739306296883, "lng": 30.48030941610716}, {"lat": 50.46396401821503, "lng": 30.487648547058143}, {"lat": 50.465084495378484, "lng": 30.487091254669167}, {"lat": 50.46862927142601, "lng": 30.489870630294718}, {"lat": 50.47374748220552, "lng": 30.49342754299164}, {"lat": 50.47902899701488, "lng": 30.479904148681612}, {"lat": 50.485619797196634, "lng": 30.470794103759772}, {"lat": 50.49062613468771, "lng": 30.458250831298756}, {"lat": 50.48960708146419, "lng": 30.450326954315074}, {"lat": 50.48733200046696, "lng": 30.443948029724083}, {"lat": 50.48942559218542, "lng": 30.427226507171667}, {"lat": 50.48880683956265, "lng": 30.429551666610678}, {"lat": 50.490763651412536, "lng": 30.415650960502603}];

/* на странице */
var dir = coords.map(({ lat, lng }) => `!4m3!3m2!1d${lat}!2d${lng}`).join("");
var pb = `!1m${4*coords.length+2}!4m${4*coords.length+1}!3e2${dir}!5m1!1sru`;
var url = `https://www.google.com/maps/embed?pb=${pb}`;
var frame = document.createElement("iframe");
frame.src = url;
frame.style.cssText = "position:absolute;border:none;width:100%;height:100%;left:0;top:0;";
document.body.appendChild(frame);

/* в консоли */
var dir = coords.map(({ lat, lng }) => [lat, lng].join(",")).join("/");
var url = `https://www.google.com/maps/dir/${dir}/data=!4m2!4m1!3e2`;
console.log("Точки на карте", url);
</script>

misha.korolcov 27.05.2020 11:33

я получаю из sql через $pointsPolygon = json_encode($pointsPolygon); потому такой страний джон еслиб не бил масив в sql в поле полигон JSON.parse помог а так я решил проблему если кому интересно вот код
const array = JSON.parse(dotsPolygon.replace(/"(\[.*?\])"/g, "$1"));
console.log(array[0].polygon)
спс за помощь

laimas 27.05.2020 11:43

Цитата:

Сообщение от misha.korolcov
потому такой страний джон

И что в нем странного?

misha.korolcov 28.05.2020 22:16

тем что json.parse не парсит а пишет невалидний джейсон потому тока через регулярку

laimas 29.05.2020 02:31

А почему вы не разбираетесь с причиной тут "я получаю из sql через $pointsPolygon = json_encode($pointsPolygon);"?


Часовой пояс GMT +3, время: 05:24.