Live for Coding Ответов: 3

Как добавить массив в json в VB


Привет,

У меня возникла проблема с добавлением массива контактов в объект json.

Мой класс-это:
Public Class HistoryClass

    Public Class Contact
        Public Property id As String
        Public Property displayName As String
    End Class

    Public Class History
        Public Property regarding As String
        Public Property startTime As DateTime
        Public Property endTime As DateTime
        Public Property contacts As Contact()
    End Class

End Class

Я может успешно отправить этот JSON:
Dim h As New HistoryClass.History With {.regarding = "test", .startTime = Now, .endTime = Now}


Но как я могу добавить к этому контакты?

Что я уже пробовал:

h.contacts = New List(Of Contact) With {.id = ContactID}

ошибка: id не является членом списка(класса HistoryClass.Контакт

h.contacts = New Contact With {.id = ContactID}

ошибка: значение типа HistoryClass.Контакт не может быть преобразован в HistoryClass.Контакт()


Dim contactColl As Collection = New Collection
       Dim ContactIDlijst As Dictionary(Of String, Contact) = New Dictionary(Of String, Contact)

       ContactIDlijst.Add("id", st)
       contactColl.Add(ContactIDlijst)
       h.contacts = contactVerzameling

ошибка: значение коллекции не может быть преобразовано в HistoryClass.Контакт()

У меня такое чувство, что я что-то упускаю из виду, но что?
Мне просто нужно добавить контакты в h

Спасибо, что уделили мне время.

3 Ответов

Рейтинг:
28

Richard Deeming

Использование инициализатора объекта:

Dim h As New HistoryClass.History With 
{
    .regarding = "test", 
    .startTime = Now, 
    .endTime = Now,
    .contacts =
    {
        New HistoryClass.Contact With { .id = ContactID }
    }
}
Как объявить объект с помощью инициализатора объекта (Visual Basic) | Microsoft Docs[^]

Использование отдельного назначения свойств с инициализатором массива:
h.contacts = 
{
    New HistoryClass.Contact With { .id = ContactID } 
}
Как инициализировать переменную массива в Visual Basic | Microsoft Docs[^]

Использование списка:
Dim contacts As List(Of HistoryClass.Contact)
contacts.Add(New HistoryClass.Contact With { .id = ContactID })
h.contacts = contacts.ToArray()
Список<T>.Метод ToArray (System.Коллекции.Общая) | Майкрософт Документы[^]


Рейтинг:
0
Рейтинг:
0

Live for Coding

извините, но это не помогло.
Я пытался

h.contacts = New String() {"Small", "Medium", "Large"}

но ошибка есть
Значение типа 'String()' не может быть преобразовано в 'HistoryClass.Contact ()', потому что 'String' не является производным от 'HistoryClass.Контакт".

Я всего лишь новичок.


Ralf Meier

Не публикуйте комментарий или информацию в качестве ответа ...

Ваше назначение не работает, потому что contacts-это не массив строк, а объект класса.
Поэтому вы должны объявить его внутри своего класса "История" как " список (контактов)".
Кроме того, ваше назначение этому объекту должно иметь либо субобъект" id", либо субобъект "displayname"

Live for Coding

Спасибо за ваш ответ.
У меня есть это в моем классе:
Контакты публичной собственности как контакт()

Что я должен тогда изменить в этой линии?
h.контакты = новый список(контактов) С помощью {.id = ContactID}

Извините за то, что я так глуп или медлителен в понимании.

Richard Deeming

Просто новичок? Вы задаете здесь вопросы с 2010 года, а являетесь членом клуба с сентября 2006 года!