Как разобрать объект POINT, отправленный в виде строки в JSON? - PullRequest
1 голос
/ 01 июня 2019

Я получаю некоторые данные из API, и ответ включает в себя местоположение пользователя по долготе и широте.

Это для отображения значка на карте в соответствии с координатами пользователя

Это объект JSON:

{
  ...
  "lonlat": "POINT (-42.796763 -5.077056)",
}

Я хочу иметь возможность проанализировать этот POINT объект и получить значения широты и долготы.

Ответы [ 3 ]

3 голосов
/ 01 июня 2019

Вы можете заменить все значения, кроме space, digits and - and decimal, затем trim leading and trailing whitespace, а затем split on space

[^\d .-]
  • [^ \ d .-] - сопоставить все, кроме digit, space, . and -

const data = {
  "lonlat": "POINT (-42.796763 -5.077056)"
};

let [lat,lng] = data.lonlat.replace(/[^\d .-]/g,'').trim().split(/\s+/)
console.log(lat);
console.log(lng);
2 голосов
/ 01 июня 2019

Вы можете использовать регулярные выражения для получения значений, предполагая, что они всегда разделяются пробелом.

const data = {
  "lonlat": "POINT (-42.796763 -5.077056)"
};

const regex = /[A-Z]+\s\((-?\d+\.\d+)\s(-?\d+\.\d+)\)/;
const [, longitude, latitude] = data.lonlat.match(regex);
console.log(longitude);
console.log(latitude);
1 голос
/ 01 июня 2019

Вы можете сначала попытаться получить символы в скобках следующим образом:

var obj = {
  "lonlat": "POINT (-42.796763 -5.077056)",
}
var regExp = /\((.*?)\)/;
var lonlat = obj.lonlat.match(regExp)[1].split(' ');
console.log(lonlat);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...