Javascript 无法从JSON数组对象获取值

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() };

通过JSON.stringify,我可以看到我有自己的数据,但就我的一生而言,如何循环并获取值,我想返回lat和lng,并将它们传递给setMark(),现在已经注释掉了

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
。它可以运行任意代码。替换将只替换第一次出现的代码。。难道不应该吗