将数据导入JSON

时间:2015-11-28 15:32:34

标签: javascript json

我正试图在地图上看到坐标。数据来自json。

我收到错误推送未定义。我正在传递数组,但收到错误

这是代码

 var testCtrl = this;
 testCtrl.allOrgUnits = response.organisationUnits;
 console.log(testCtrl.allOrgUnits)

 for (i = 0; i < testCtrl.allOrgUnits.length; i++) {
   if(testCtrl.allOrgUnits[i].coordinates != undefined && testCtrl.allOrgUnits[i].coordinates.length < 200) {
     testCtrl.geoCoords.push(new Array(testCtrl.allOrgUnits[i].name, testCtrl.allOrgUnits[i].coordinates.substring(1,testCtrl.allOrgUnits[i].coordinates.length-1).split(",")));
    }
  }

 // Add the coordinates to the map.
 addMarkers(testCtrl.geoCoords);
});

JSON数据就像

organization units [{ "name":david , "coordinates""[ 10.24 ,23.80] { "name":phil , "coordinates""[ 35.80 ,23.80]

这是函数addMarkers

function addMarkers(coordinates) {
    var marker;
    markers = [];
    for (i = 0; i < coordinates.length; i++) { 
        // Create and add a new marker per coordinate.
        marker = new google.maps.Marker({
            position: new google.maps.LatLng(coordinates[i][1][1], coordinates[i][1][0]),
            map: map,
            title: coordinates[i][0],
            icon: blueMarker,
            current: false,
        });

        markers.push(marker);

        // Add a listener to each marker, so that they will display the name of the facility when clicked.
        google.maps.event.addListener(marker, 'click', (function(marker, i) {
            return function() {
                infowindow.setContent("<div class='info'><h4>" + coordinates[i][0] + "</h4>Facility</div>");
                infowindow.open(map, marker);
            }
        })(marker, i));
    }

3 个答案:

答案 0 :(得分:0)

在尝试推送某些内容之前,您可能需要将geoCords初始化为数组。

testCtrl.geoCoords = [];

答案 1 :(得分:0)

您正尝试在undefined上调用推送方法 你这样做

testCtrl.geoCoords.push()

其中testCtrl没有属性geoCoords,所以首先初始化此属性,如

testCtrl.geoCoords = []

现在它是一个空数组,你可以在这个

上使用push方法

答案 2 :(得分:0)

您可以将json转换为Object,之后可能会更容易。

private ObjectMapper mapper = new ObjectMapper();
listPersonCoordinates = mapper.readValue(query_result, new TypeReference<ArrayList<PersonCoordinate>>(){})
for (PersonCoordinate pc : listPersonCoordinate) {
    pc.getName();
    pc.getCoordinate();
    // Do your stuff here
}

public Class PersonCoordinate {
    String name;
    ArrayList<double> coordinate;

    // getters + setters + constructor
}

希望这有帮助:)

编辑:您的JSON看起来很奇怪。错过了一些"