对于“label”:"John2",,我得到了无效的标签错误。我把我的json数据放在括号中,那么为什么我仍然会得到这个错误呢?我是否仍然缺少一些东西,以致于代码将其与java脚本标签混淆?
<script type="text/javascript">
var data = "(" + {
"firstname": "John1",
"lastname": "Doe",
"location": {
"latitude": "48.4048403957642",
"longitude": "2.68452644348145"
}
}
{
"firstname": "John2",
"lastname": "Doe",
"location": {
"latitude": "48.4050236871384",
"longitude": "2.68512690051361"
}
}
{
"firstname": "John3",
"lastname": "Doe",
"location": {
"latitude": "48.4048403957642",
"longitude": "2.68452644348145"
}
}
+ ")" ;
function initialize() {
var center = new google.maps.LatLng(48.404840395764175, 2.6845264434814453);
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 3,
center: center,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var markers = [];
for (var i = 0; i < data.length; i++) {
var location = data[i];
var latLng = new google.maps.LatLng(location.latitude,
location.longitude);
var marker = new google.maps.Marker({
position: latLng
});
markers.push(marker);
}
var markerCluster = new MarkerClusterer(map, markers);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>发布于 2012-05-28 10:55:18
你有两个问题(我能发现)。
首先,您使用的是JavaScript,而不是JSON。你有一个对象字面意思。
完全摆脱"("和")"。如果您试图使用eval解析JSON,就会使用这些方法。您没有JSON,如果有,您应该使用JSON对象(及其parse方法),而不是eval。目前,您正在尝试对对象进行紧张化(这将给您提供类似于"([Object object])"的东西,这根本没有任何用处)。
第二,您似乎试图处理一个对象数组,但您只是一个接一个地将它们放置在一起。
用数组文本[和]包装对象。
用逗号(,)分隔数组中的项。
出现错误消息的原因是您创建了一个非常奇怪的解析状态,以至于JS引擎正在尝试标记一个循环。
发布于 2012-05-28 10:56:10
使用JSON生成函数不是更容易吗?例如:
function array2json(arr) {
var parts = [];
var is_list = (Object.prototype.toString.apply(arr) === '[object Array]');
for (var key in arr) {
var value = arr[key];
if(typeof value == "object") { //Custom handling for arrays
if(is_list) parts.push(array2json(value)); /* :RECURSION: */
else parts[key] = array2json(value); /* :RECURSION: */
} else {
var str = "";
if(!is_list) str = '"' + key + '":';
//Custom handling for multiple data types
if(typeof value == "number") str += value; //Numbers
else if(value === false) str += 'false'; //The booleans
else if(value === true) str += 'true';
else str += '"' + value + '"'; //All other things
// :TODO: Is there any more datatype we should be in the lookout for? (Functions?)
parts.push(str);
}
}
var json = parts.join(",");
if(is_list) return '[' + json + ']';//Return numerical JSON
return '{' + json + '}';//Return associative JSON
}(Sidenote:我没有自己编写这段代码,但它非常有用!)
您可以使用以下方法生成JSON数据:
myJSON = array2json(['any data', {'even objects': 'can go in here'});您可以使用以下方法将数组返回:
var myArray = eval('(' + myJSON + ')');https://stackoverflow.com/questions/10783411
复制相似问题