Я создал веб-сервис с базой данных MySQL, PHP и JSON для загрузки и загрузки данных. Контейнер JSON состоит из 3 токенов: «geslaagd» (как логическое значение), «текст» (как строка) и «inhoud» (как массив). JSON будет преобразован, поэтому он подходит в качестве источника данных для комбинированного списка. Он работает нормально, но у меня есть проблема с тем, как код выглядит сейчас.
Сначала это выглядело так:
Public Function VerkrijgGroepen() As JsonGroepenContainer
' Haal de Groepen uit een JSONobject en retouner deze aan aanvrager.
Dim mJsonGet As String = JsonObjectDownloaden(My.Settings.ODB_UrlWebservice & My.Settings.ODB_BestandGroepenDownloaden)
Return JsonConvert.DeserializeObject(Of JsonGroepenContainer)(mJsonGet)
End function
Public Class JsonObjectGroepenContainer ' This is the Container-Class for database-table 'Groepen'
Public Property geslaagd As Boolean
Public Property tekst As String
Public Property groepen As List(Of JsonObjectGroepenInhoud)
End Class
Public Class JsonObjectGroepenInhoud ' This is the Inhoud-Class (Content-Class) for database-table 'Groepen'
Public Property id As Integer
Public Property naam As String
End Class
Это означало, что мне пришлось кодировать класс-контейнер и Inhoud-Class (Content-Class) для каждой таблицы базы данных. Поэтому я хотел создать контейнер-класс, который работал бы для каждой таблицы, и он работал бы:
Public Class JsonContainer ' This is the Container-Class for all tables in the database.
Public Property geslaagd As Boolean
Public Property tekst As String
Public Property inhoud As List(Of JToken)
End Class
Но теперь мой код выглядит так:
Public Function VerkrijgObjecten() As List(Of JsonObjectGroepenInhoud)
' Verkrijg JSON van webservice.
Dim mJson As String = JsonObjectDownloaden(My.Settings.ODB_UrlWebservice & My.Settings.ODB_BestandGroepenDownloaden)
Dim mJsonParse As JObject = JObject.Parse(mJson)
Dim geslaagd As Boolean = CBool(mJsonParse("geslaagd"))
Dim tekst As String = CStr(mJsonParse("tekst"))
Dim inhoud As JToken = mJsonParse("inhoud")
Dim groepen As New List(Of JsonObjectGroepenInhoud)
' Controleer of verkrijgen van JSON in webservice geslaagd is.
If geslaagd Then
' Zet de inhoud van JSONtoken ("inhoud") om in een lijst met groepen.
For Each i As JToken In inhoud
Dim groep As JsonObjectGroepenInhoud = New JsonObjectGroepenInhoud
groep.id = CInt(i("id"))
groep.naam = CStr(i("naam"))
groepen.Add(groep)
Next
Else
' Stel gebruiker op de hoogte van fout.
MessageBox.Show(
"Er is een fout opgetreden tijdens het ophalen van de gegevens van de Groepen. De webservice geeft een foutmelding door." & vbCrLf & vbCrLf & tekst,
"Fout in webservice",
MessageBoxButtons.OK,
MessageBoxIcon.Error
)
End If
Return groepen
End Function
Он работает нормально, и Обработка ошибок теперь лучше (больше логики c), но выглядит ужасно! А когда код выглядит ужасно, это обычно ужасно !? У меня такое ощущение, что этот код можно упростить, но после 2 дней попыток я сдаюсь. Есть кто-то, кто может мне помочь? Есть другой способ или это все?