2015-11-17 3 views
0

У меня есть строка [{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]Как разбить строку в Javascript

Я хочу, чтобы результат как [{8.55701,76.880934},..etc] только цифры.

Это строка JSON -

<script type="text/javascript"> 
var myVar = ' <%= request.getAttribute("Map") %>'; /* retrieve json from request attribute */ 
var result = myVar.split(',',2); 
var latitude = parseFloat(result[0].replace('"Latitude":','')); 
var longitude = parseFloat(result[1].split(':')); 
alert(latitude); 
</script> 

Я пытался, но не получает его.

+0

Вы даже попробовали? Вы проверяете метод 'split()'? 'JSON.parse' и т.д ..? Что вы пробовали? SO не является свободным механическим дерном. – abrunet

+0

Почему бы не использовать 'eval()' или 'JSON.parse()'? – PHPglue

+0

Вы должны знать, что объекты являются парами ключ-значение, вы не можете просто хранить их самостоятельно. поэтому вам придется использовать вместо этого массив. '[[8.55701,76.880934], .. и т. Д.], Чтобы держать их в парах, если вы хотите, чтобы они были. В качестве альтернативы вы можете просто создать один массив, где каждое другое число - долгота, а любое другое - широта. –

ответ

0

Если вы действительно хотите, чтобы ваш странный формат данных просто использовать:

var convertStrange = function(string) { 
    return '[' + JSON.parse(string).map(function(item) { 
     return '{' + [ item.Latitude, item.Longitude ].join(',') + '}'; 
    }).join(',') + ']'; 
}; 

Так,

convertStrange('[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]') 

будет возвращать строковые

[{8.55701,76.880934},{8.55701,76.880935},{8.55701,76.880935}] 
+0

что, если это ACTUAL строка (выглядит как строка REAL * JSON * для меня) - простое исправление - JSON.Переведите строку сначала: D ... конечно, тогда выход должен быть строкой .. потому что это недействительно ничего другого –

+0

Это допустимый массив, содержащий объекты, нет? – Legotin

+0

Я имею в виду вывод «требуется» в вопросе, ваш код хороший человек –

0
{8.55701,76.880934} 

является неправильное строительство объекта. Объекты должны быть имя: пары значений, так что может быть только

{name1:8.55701, name2:76.880934} 

или вы можете использовать массив как

[[8.55701, 76.880934], ... ] 

если вы хотите как строка использовать это;

var string = '[{"Latitude":8.55701,"Longitude":76.880934}, {"Latitude":8.55701,"Longitude":76.880935}, {"Latitude":8.55701,"Longitude":76.880935}]'; 
var newString = string.replace(/\"Latitude\":|\"Longitude\":/g, ""); 
1

попробуйте это, эта функция вернет строку, как вы ожидали.

function pareseJSONStr(str){ 

    var json = JSON.parse(str); 
    var rslt = []; 
    json.forEach(function(obj){ 
     rslt.push("{" + obj.Latitude + ", " + obj.Longitude + "}"); 
    }); 
    return "[" + rslt.join(",") + "]" 
} 

вызов этой функции, как

var mystr = '[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]'; 
pareseStr(mystr); 

возвращает строку

"[{8.55701, 76.880934},{8.55701, 76.880935},{8.55701, 76.880935}]" 
+0

Спасибо большое :) –

2

Используйте простые Регулярное выражение для удаления строки:

.replace(/\"\w+\":/g, ''); 

'[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]'.replace(/\"\w+\":/g, ''); 

И если вы хотите получить значения, которые вы можете использовать JSON.parse:

var coords = JSON.parse('[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]'); 

// And loop 
coords.forEach(function(coord) { 
    console.log('latitude', coord.Latitude); 
    console.log('longitude', coord.Longitude); 
}); 
+0

Спасибо большое :) –

+0

Голосовать или отметить как правильно, если это вам поможет. Всегда пожалуйста –

Смежные вопросы