Heyho,
我正在构建一些地理编码器,我需要将json-map发射到groovy后端,
尝试映射此ul结构: http://jsfiddle.net/PJFVN/1/
<ul id="hiddenmap">
<li class="hidden" id="street">Westerwarft 2</li>
<li class="hidden" id="plz">25859</li>
<li class="hidden" id="city">Hallig Hooge</li>
<li class="hidden" id="country" value="" >DE</li>
<li class="hidden" id="lon" > 8.516472</li>
<li class="hidden" id="lat" >54.577993</li>
</ul>
到一张看起来像
的地图[{"street":"Westerwarft 2","plz":"25859","location":{"lat":"54.577993","lon":" 8.516472"},"country":"DE"}]
使用以下js:
var map = $('#hiddenmap').map(function() {
var $item = $(this);
var loc = '{"lat":"'+$item.find('li#lat').text()+'","lon":"'+$item.find('li#lon').text()+'"},';
return {
street: $item.find('li#street').text(),
plz: $item.find('li#plz').text(),
location:loc ,
country: $item.find('li#country').text()
};
}).get();
var v = JSON.stringify(map);
alert(v);
但正如你在小提琴中看到的那样,我的肮脏尝试抛弃了
[{"street":"Westerwarft 2","plz":"25859","location":"{\"lat\":\"54.577993\",\"lon\":\" 8.516472\"},","country":"DE"}]
所以我需要一种原生方式来获取地图中的位置对象, 并且我将需要在地图上加入更多地址
有办法吗?
因为目前我正在重复自己,为每个不同的案例手动构建地图,如:
var String = '['+'{'+'"fax":'+'"'+fax1+'"'+','+'"genau":'+genau1+','+'"land":'+'"'+land1+'"'+','+'"location": {'+'"lon":'+lon1+','+'"lat":'+lat1+'},'+'"notruf":'+'"'+notruf1+'"'+','+'"ort":'+'"'+ort1+'"'+','+'"plz":'+'"'+plz1+'"'+','+'"strasse":'+'"'+strasse1+'"'+','+'"telefon":'+'"'+telefon1+'"},{'+'"fax":'+'"'+fax2+'"'+','+'"genau":'+genau2+','+'"land":'+'"'+land2+'"'+','+'"location": {'+'"lon":'+lon2+','+'"lat":'+lat2+'},'+'"notruf":'+'"'+notruf2+'"'+','+'"ort":'+'"'+ort2+'"'+','+'"plz":'+'"'+plz2+'"'+','+'"strasse":'+'"'+strasse2+'"'+','+'"telefon":'+'"'+telefon2+'"}]';
我需要摆脱这个
提前感谢任何提示
答案 0 :(得分:8)
也许我没有正确理解你的问题,但我不确定你是否为该位置手动构建字符串。为什么不将它作为本机对象,让JSON.stringify()处理转换。
像这样:
var map = $('#hiddenmap').map(function () {
var $item = $(this);
var loc = {
lat: $item.find('li#lat').text(),
lon: $item.find('li#lon').text()
};
return {
street: $item.find('li#street').text(),
plz: $item.find('li#plz').text(),
location: loc,
country: $item.find('li#country').text()
};
}).get();
var v = JSON.stringify(map);
console.log(v);
alert(v);
答案 1 :(得分:2)
只需将loc
变量定义为真正的JSON映射而不是表示JSON映射的字符串:http://jsfiddle.net/PJFVN/2/
jQuery(document).ready(function ($) {
$('#action').click(function () {
var map = $('#hiddenmap').map(function () {
var $item = $(this);
var loc = {lat : $item.find('li#lat').text(),
lon : $item.find('li#lon').text()};
return {
street: $item.find('li#street').text(),
plz: $item.find('li#plz').text(),
location: loc,
country: $item.find('li#country').text()
};
}).get();
var v = JSON.stringify(map);
alert(v);
});
});