Я создал класс C# из образца JSON-вывода, используя Graph Explorer с контактами (как показано ниже). Однако, когда я прохожу сериализированный объект (используя JsonConvert.SerializeObject (MyClass)) с нулевыми значениями свойств строки массива к операции POST, чтобы создать контакт, я получаю следующее сообщение об ошибке в ответ:Как собираются строковые коллекции в пользовательском классе C# для контактов с API-интерфейсом REST Outlook?
нулевого значение было найдено свойство «BusinessPhones», которое имеет ожидаемый тип «Collection (Edm.String) [Nullable = False]». Ожидаемый тип «Коллекция (Edm.String) [Nullable = False]» не позволяет нулевые значения.
(для справки, это поддерживаемые Контакт свойства: https://msdn.microsoft.com/en-us/office/office365/api/complex-types-for-mail-contacts-calendar#contact)
Вот пример исходного JSON:
{"AssistantName":null,"Birthday":null,"BusinessAddress":null,"BusinessPhones":null,"Categories":null,"Children":null,"CompanyName":"Fun Toys and Bikes","Department":null,"DisplayName":"Mr. Robert E. Ahlering","EmailAddresses":[{"Address":"[email protected]","Name":"Robert E. Ahlering ([email protected])"}],"FileAs":null,"Generation":null,"GivenName":"Robert","HomeAddress":null,"Initials":null,"JobTitle":"Owner","Manager":null,"MiddleName":null,"MobilePhone1":null,"NickName":null,"OfficeLocation":null,"OtherAddress":null,"PersonalNotes":null,"Profession":null,"SpouseName":null,"Surname":"Ahlering","Title":null,"YomiCompanyName":null,"YomiGivenName":null,"YomiSurname":null}
Я считаю, что правильное форматирование для нулевого значения BusinessPhones (для выберите один из массивов строк) должен быть «BusinessPhones»: [], а не «BusinessPhones: null».
Так как я могу реализовать свойства строкового массива/коллекции в классе для размещения этого?
public partial class OutlookContact
{
public partial class Businessaddress
{
public object City { get; set; }
public object CountryOrRegion { get; set; }
public object PostalCode { get; set; }
public object State { get; set; }
public object Street { get; set; }
}
public partial class Emailaddress
{
public string Address { get; set; }
public string Name { get; set; }
}
public partial class Homeaddress
{
public string City { get; set; }
public object CountryOrRegion { get; set; }
public string PostalCode { get; set; }
public string State { get; set; }
public string Street { get; set; }
}
public partial class Otheraddress
{
public object City { get; set; }
public object CountryOrRegion { get; set; }
public object PostalCode { get; set; }
public object State { get; set; }
public object Street { get; set; }
}
public partial class Rootobject
{
public object AssistantName { get; set; }
public DateTime? Birthday { get; set; }
public Businessaddress BusinessAddress { get; set; }
public string[] BusinessPhones { get; set; }
public object[] Categories { get; set; }
public object[] Children { get; set; }
public object CompanyName { get; set; }
public string Department { get; set; }
public string DisplayName { get; set; }
public Emailaddress[] EmailAddresses { get; set; }
public string FileAs { get; set; }
public object Generation { get; set; }
public string GivenName { get; set; }
public Homeaddress HomeAddress { get; set; }
public object Initials { get; set; }
public string JobTitle { get; set; }
public object Manager { get; set; }
public object MiddleName { get; set; }
public object MobilePhone1 { get; set; }
public object NickName { get; set; }
public string OfficeLocation { get; set; }
public Otheraddress OtherAddress { get; set; }
public object PersonalNotes { get; set; }
public object Profession { get; set; }
public object SpouseName { get; set; }
public string Surname { get; set; }
public object Title { get; set; }
public object YomiCompanyName { get; set; }
public object YomiGivenName { get; set; }
public object YomiSurname { get; set; }
}
}