Javascript 无法从JSON数组对象获取值
通过JSON.stringify,我可以看到我有自己的数据,但就我的一生而言,如何循环并获取值,我想返回lat和lng,并将它们传递给setMark(),现在已经注释掉了Javascript 无法从JSON数组对象获取值,javascript,arrays,json,Javascript,Arrays,Json,通过JSON.stringify,我可以看到我有自己的数据,但就我的一生而言,如何循环并获取值,我想返回lat和lng,并将它们传递给setMark(),现在已经注释掉了 function setMarkers(map) { var data = { optStatus: $("input[name='optStatus']:checked").attr("id"), sortOrder: $('#sortOrder').val() };
function setMarkers(map) {
var data = {
optStatus: $("input[name='optStatus']:checked").attr("id"),
sortOrder: $('#sortOrder').val()
};
var sTemp = "";
$.ajax({
type: 'GET',
url: '/MeterReadsDue/getMarkers',
async: true,
dataType: 'json',
success: function (data) {
var myArray = data;
$("#test1").append(JSON.stringify(data));
//setMark(map,lat,lng);
}
});
}
DIV输出是下面的JSON字符串化文本
{
"ContentEncoding": null,
"ContentType": null,
"Data": "[{'lat':55.86001,'lng':-4.24842,'content':'08ELSTER-X06A245926'},{'lat':55.86001,'lng':-4.24842,'content':'06ELSTER11W722962'},{'lat':55.86001,'lng':-4.24842,'content':'06ELSTER13M412917'},{'lat':55.86001,'lng':-4.24842,'content':'06ELSTER14H760382'},{'lat':55.86001,'lng':-4.24842,'content':'06ELSTER10M097604'},{'lat':55.86001,'lng':-4.24842,'content':'06ELSTER11M763299'},{'lat':55.86001,'lng':-4.24842,'content':'06ELSTER13W700357'},{'lat':55.86001,'lng':-4.24842,'content':'07100043500A012550'},{'lat':55.86001,'lng':-4.24842,'content':'07100043675521477'},{'lat':55.86001,'lng':-4.24842,'content':'07100330200M018100'},{'lat':55.86001,'lng':-4.24842,'content':'07100043582490025'},{'lat':55.86001,'lng':-4.24842,'content':'06ELSTER04M227373'},{'lat':55.86001,'lng':-4.24842,'content':'08ELSTER-X88388817'},{'lat':55.86001,'lng':-4.24842,'content':'07100037098W006075'},{'lat':55.86001,'lng':-4.24842,'content':'06ELSTER04M378296'},{'lat':55.86001,'lng':-4.24842,'content':'07100037187608261'},{'lat':55.86001,'lng':-4.24842,'content':'07100043587074857'},{'lat':55.86001,'lng':-4.24842,'content':'06ELSTER83246929'},{'lat':55.86001,'lng':-4.24842,'content':'07100330205M086806'},{'lat':55.86001,'lng':-4.24842,'content':'06ELSTER07A091225'}]",
"JsonRequestBehavior": 1,
"MaxJsonLength": null,
"RecursionLimit": null
}
如果查看输出的JSON,可以看到
Data
属性包含一个字符串,该字符串包含另一个类似JSON的字符串。不幸的是,它本身不是有效的JSON,因为它对字符串使用单引号而不是双引号。但幸运的是,您的特定输出格式似乎从未包含双引号,因此您可以先替换它们,然后解析它:
success: function (data) {
var realData = data.Data.replace(/'/g, '"'); // replace single by double quotes
realData = JSON.parse(realData); // parse JSON
$("#test1").append(JSON.stringify(realData));
// realData is an array of objects, so iterate over it
realData.forEach(function (marker) {
setMark(map, marker.lat, marker.lng);
});
}
JSON的格式正确吗?用于验证。我认为应该使用JSON.parse将“Data”字段解析为数组。然后你可以循环它。如果eval(realData)呢?永远不要对从其他地方得到的字符串使用
eval
。它可以运行任意代码。替换将只替换第一次出现的代码。。难道不应该吗