Working with array

Oct 18, 2011 at 3:13 AM
Edited Oct 26, 2011 at 5:37 AM

I am trying to create a class for serializing and deserializing arrays. The class I have created, appears to be working for deserializing, but when I try to serialize the array, I am having issues. I am a fairly new C# developer and I am sure I have left an important piece out of my code, I just am not sure what.

Below is a copy of the class I created:

namespace PinnacleCartFormAPI
{
    class clsGetCustomersResponse
    {
        public Customer Customer = new Customer();//{ get; set; }
    }

    public class Customer
    {
        public Int32 UserId;
        public string UserName;
        public CustBilling Billing = new CustBilling();
        public AddressBook[] AddressBook;// AddressBook = new AddressBook();
    }

    public class CustBilling
    {
        public string FullName, FirstName, LastName, Email, Company, Phone;
        public CustAddress Address = new CustAddress();
    }

    public class CustAddress
    {
        public string Name, Street1, Street2, City, State, Zip, Country;
    }

    public class AddressBook
    {
        public string Name, Street1, Street2, City, State, Zip, Country;
    }
}

As you can see, the AddressBook class needs to be an Array. I believe my issue is related to the fact that I am not initiating the AddressBook class properly as an array.

Below, is a copy of the calling code that adds values to the different elements of the class:

clsGetCustomersResponse GetCustomersResp = new clsGetCustomersResponse();
GetCustomersResp.Customer.UserId = 123456;
GetCustomersResp.Customer.UserName = "Username";
GetCustomersResp.Customer.Billing.FullName = "Full Name";
GetCustomersResp.Customer.Billing.FirstName = "First Name";
GetCustomersResp.Customer.Billing.LastName = "Last Name";
GetCustomersResp.Customer.Billing.Email = "email@domain.com";
GetCustomersResp.Customer.Billing.Phone = "7778889999";
GetCustomersResp.Customer.Billing.Address.Name = "Address Name";
GetCustomersResp.Customer.Billing.Address.Street1 = "Address Street 1";
GetCustomersResp.Customer.Billing.Address.Street2 = "";
GetCustomersResp.Customer.Billing.Address.City = "Address City";
GetCustomersResp.Customer.Billing.Address.State = "Address State";
GetCustomersResp.Customer.Billing.Address.Zip = "Address Zip";
GetCustomersResp.Customer.Billing.Address.Country = "Address Country";
GetCustomersResp.Customer.AddressBook[0].Name = "Address Name";
GetCustomersResp.Customer.AddressBook[0].Street1 = "Address Street 1";
GetCustomersResp.Customer.AddressBook[0].Street2 = "";
GetCustomersResp.Customer.AddressBook[0].City = "Address City";
GetCustomersResp.Customer.AddressBook[0].State = "Address State";
GetCustomersResp.Customer.AddressBook[0].Zip = "Address Zip";
GetCustomersResp.Customer.AddressBook[0].Country = "Address Country";


 

As soon as I hit the bolded lines, I receive the following error:

"Object reference not set to an instance of an object"

Again, I believe this is a result of me not properly initializing the AddressBook portion of the code. However, I am not certain how to do that with the array.

Can you please provide me with some direction on this?

Thanks,

Zach

Oct 26, 2011 at 5:40 AM

Is there anyone in the JSON.NET interwebz that is able to offer me some assistance on this issue? I am sure it is a simple fix, but I am new to C# and especially JSON.NET.

Thanks,

Zach

Jan 27, 2012 at 5:57 PM
...
GetCustomersResp.Customer.AddressBook = new AdressBook[1];
...

Basically, your poperty GetCustomersResp.Customer.AddressBook is null...