Я пытаюсь создать класс для сериализации и десериализации массивов. Созданный мной класс, похоже, работает для десериализации, но когда я пытаюсь сериализовать массив, у меня возникают проблемы. Я довольно новый разработчик C#, и я уверен, что оставил важную часть своего кода, я просто не уверен, что.Сериализация массива JSON.NET в C# .NET
Ниже копия класса я создал:
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;
}
}
Как вы можете видеть, класс AddressBook должен быть массив. Я считаю, что моя проблема связана с тем, что я не инициирую класс AddressBook должным образом как массив.
Ниже приводится копия кода вызова, который добавляет значения различных элементов класса:
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 protected]";
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";
Как только я ударил жирным шрифтом строки, я получаю следующее ошибка:
«объект не задана ссылка на экземпляр объекта»
Опять же, я опровергаю Это связано с тем, что я неправильно инициализировал часть AddressBook кода. Однако я не уверен, как это сделать с массивом.
Не могли бы вы предоставить мне какое-то направление?
Спасибо,
Zach
Джон, Когда я добавляю, что у вас есть предположил, я получаю сообщение об ошибке: «Невозможно неявно преобразовать тип» System.Collections.Generic.List 'в PinnacleCartFormAPI.AddressBook ". Не могли бы вы объяснить, что я здесь делаю неправильно? Мне нужно изменить раздел AddressBook моего класса? –
WebTech
@WebTech: вам нужно изменить свойство 'AddressBook' * * в вашем классе' Customer' для типа 'List' (или, возможно, 'IList '). –
Большое вам спасибо за помощь. Используя то, что вы предоставили, все работает так, как я ожидал. – WebTech