I've been trying to get this to work following these instructions
http://blog.reindel.com/2007/10/02/parse-json-with-jquery-and-javascript/

, but i can't seem to get any output.

I am getting json data from google maps getLocations(), so the way I
grab the json is a bit different.

according to google, the json looks like this
[code]
{
  "name": "1600 Amphitheatre Parkway, Mountain View, CA, USA",
  "Status": {
    "code": 200,
    "request": "geocode"
  },
  "Placemark": [
    {
      "address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043,
USA",
      "AddressDetails": {
        "Country": {
          "CountryNameCode": "US",
          "AdministrativeArea": {
            "AdministrativeAreaName": "CA",
            "SubAdministrativeArea": {
              "SubAdministrativeAreaName": "Santa Clara",
              "Locality": {
                "LocalityName": "Mountain View",
                "Thoroughfare": {
                  "ThoroughfareName": "1600 Amphitheatre Pkwy"
                },
                "PostalCode": {
                  "PostalCodeNumber": "94043"
                }
              }
            }
          }
        },
        "Accuracy": 8
      },
      "Point": {
        "coordinates": [-122.083739, 37.423021, 0]
      }
    }
  ]
}
[/code]

I don't get any errors, but firefox shows the script stopping on line
745 which is something about object length== undefined.

I assume that because I can alert
the code i am using to try to parse the json is and get the accuracy
is
[code]
 var jJSON = {
    getValues: function(obj,num) {
        return jJSON[obj]["values"].slice(0,((num == null) ? jJSON[obj]
["values"].length : num));
    },
    getCount: function(obj) {
        return jJSON[obj]["count"];
    },
    getRandomValues: function(obj,num) {
        var a = [];
        var b = jJSON[obj]["values"];
        var c = b.length;
        if (num != null && num < c) {
            c = num;
        }
        for (i = 0; i < c; i++) {
            var e = Math.floor(Math.random() * b.length);
            a[i] = b[e];
            b.splice(e,1);
        }
        return a;
    }
};


                                                geocoder.getLocations(address, 
function(json){

                                                 /* Parse JSON objects */

        jJSON["accuracy"] = (function() {
            response = {
                values: [],
                count: 0
            };
            $.each(json.name.placemark,function(i,item) {
                if (placemark.accuracy != "undefined") {

                    response.count++;
                    response.values[i] = placemark.accuracy;
                }
            });
            return response;
        })();
[/code]

anybody see what i've got wrong here? or if there is another better
way to do this?

Reply via email to