EzAnalyst
EzAnalyst

Reputation: 253

Accessing Objects inside Array inside JSON object using Javascript

I have an encoded JSON object that stores an array of objects that I wish to iterate through in order to input into a database. The Result object is similar to as follows:

{
    "customers": [
        {
            "customer": {
                "id":"1",
                "customerName":"Customer Alpha",
                "customerID":" custA",
                "customerAddress":" Alpha Way",
                "customerCity":" Alpha",
                "customerState":" AL",
                "customerZip":"91605"
            }
        },
        {
            "customer": {
                "id":"2",
                "customerName":"Customer Beta",
                "customerID":" CustB",
                "customerAddress":" Beta Street",
                "customerCity":" Beta",
                "customerState":" BE",
                "customerZip":"91605"
            }
        }
    ]
}

I'd like to be able to input each field into the database, but the code I have inputs undefined into the database for everything. What is the proper way to access the variables stored in each field inside the array?

Here's what I'm using so far which doesn't work:

function insertCustomer(customerName, customerID, customerAddress, customerCity, customerState, customerZip) {
db.transaction(function (tx) {
    tx.executeSql('INSERT INTO Customers (customerName, customerID, customerAddress, customerCity, customerState, customerZip) VALUES (?, ?, ?, ?, ?, ?)', [customerName, customerID, customerAddress, customerCity, customerState, customerZip], CountReturns);
    });
};

        $.ajax({
      url      : 'http://webserver/retrieveDatabase.php',
      dataType : 'json',
      type     : 'get',
      success  : function(Result){
        alert(Result.customers);
        for (var i = 0, len = Result.customers.length; i < len; ++i) {
          var customer = Result.customers[i];
          insertCustomer(customer.customerName, customer.customerID, customer.customerAddress, customer.customerCity, customer.customerState, customer.customerZip);
        }
      }
    });

The alert responds with a series of [object Object]s.

Upvotes: 11

Views: 53288

Answers (2)

user1299518
user1299518

Reputation:

You can handle the JSON object like:

for(var key in Result["customers"]) {
   // examples
   console.log( Result[key].customer );
   console.log( Result[key]["customer"] );
   console.log( Result[key]["customer"].customerID );
}

Upvotes: 1

staramir
staramir

Reputation: 141

Change

var customer = Result.customers[i];

to

var customer = Result.customers[i].customer;

Upvotes: 10

Related Questions