Создать json строки
Добрый день. Есть верстка:
<div class="google-map-marks"> <div class="google-map-center"><span class="latitude">57.71626291400055</span><span class="longitude">43.94435294999994</span></div> <div class="marker"><span class="latitude">60.207426504475734</span><span class="longitude">35.94630607499994</span><span class="delet"></span></div> <div class="marker"><span class="latitude">60.81312576191666</span><span class="longitude">61.43458732499994</span><span class="delet"></span></div> <div class="marker"><span class="latitude">45.660621650435466</span><span class="longitude">52.64552482499994</span><span class="delet"></span></div> <div class="marker"><span class="latitude">45.537632112877695</span><span class="longitude">79.01271232499994</span><span class="delet"></span></div> <div class="marker"><span class="latitude">57.196191095006554</span><span class="longitude">79.36427482499994</span><span class="delet"></span></div> </div> Нужно на jQuery собрать данные со всех элементов и создать json строку:
"contents": [
{
"id": 1,
"lat": 57.71626291400055,
"lng": 43.94435294999994
},
{
"id": 2,
"lat": 60.207426504475734,
"lng": 35.94630607499994
}
],
|
Разобрался:
var _this = $(this),
menu = {},
i = 0;
_this.parent().prev().children('div').each(function (i) {
menu["mark" + i++] = {
lat: $(this).children('.latitude').html(),
lng: $(this).children('.longitude').html()
};
});
var json = '['+JSON.stringify(menu)+']';
|
var jsn = JSON.stringify($.map($('div.google-map-marks div'), function(e, i) {
e = e.childNodes;
return {id: ++i, latitude: e[0].textContent, longitude: e[1].textContent}
}))
console.log(jsn )
|
Янковиц,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
span{
margin: 5px;
}
</style>
</head>
<body>
<div class="google-map-marks">
<div class="google-map-center"><span class="latitude">57.71626291400055</span><span class="longitude">43.94435294999994</span></div>
<div class="marker"><span class="latitude">60.207426504475734</span><span class="longitude">35.94630607499994</span><span class="delet"></span></div>
<div class="marker"><span class="latitude">60.81312576191666</span><span class="longitude">61.43458732499994</span><span class="delet"></span></div>
<div class="marker"><span class="latitude">45.660621650435466</span><span class="longitude">52.64552482499994</span><span class="delet"></span></div>
<div class="marker"><span class="latitude">45.537632112877695</span><span class="longitude">79.01271232499994</span><span class="delet"></span></div>
<div class="marker"><span class="latitude">57.196191095006554</span><span class="longitude">79.36427482499994</span><span class="delet"></span></div>
</div>
<script>
var spn = document.querySelectorAll('.latitude,.longitude');
var obj = {};
var arr = [].reduce.call(spn, function(a,b,i) {
i % 2 ? (obj.lng = b.textContent,obj = {}):(a.push(obj),obj.id = a.length,obj.lat = b.textContent )
return a
}, []);
document.write('<br>'+JSON.stringify(arr, null, 4))
</script>
</body>
</html>
|
| Часовой пояс GMT +3, время: 04:10. |