Как я могу использовать десериализованные JSON данные в VB. Net? - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь получить доступ к данным, которые, по-моему, успешно десериализованы из файла JSON в vb. net.

В настоящее время моя программа считывает данные в строку из файла JSON. Я изучал, как десериализовать данные JSON в структуру класса, и использовал визуальную студийную функцию для создания структуры класса для меня.

Мой вопрос: как мне получить доступ к этим данным после их десериализации? ? Я просмотрел сотни страниц форумов и постов переполнения стека безрезультатно.

Вот данные JSON:

{
  "total": 389097,
  "offset": 0,
  "items": [
    {
      "entity": "Play",
      "arid": "mpdwyOB32n",
      "played_time": "2020-02-21T06:21:26+0000",
      "service_id": "triplej",
      "recording": {
        "entity": "Recording",
        "arid": "mtNYq18DdY",
        "title": "Supalonely",
        "metadata": null,
        "description": null,
        "duration": 219,
        "artists": [
          {
            "entity": "Artist",
            "arid": "ma35vZnl5B",
            "name": "Benee",
            "artwork": [],
            "links": [
              {
                "entity": "Link",
                "arid": "mlb5b4r7A0",
                "url": "http://musicbrainz.org/artist/c352c56b-a610-4fc4-884c-704547ef30f5",
                "id_component": "c352c56b-a610-4fc4-884c-704547ef30f5",
                "title": "MusicBrainz artist",
                "mini_synopsis": null,
                "short_synopsis": null,
                "medium_synopsis": null,
                "type": "service",
                "provider": "musicbrainz",
                "external": true
              }
            ],
            "is_australian": null,
            "type": "primary",
            "role": null
          }
        ],
        "releases": [
          {
            "entity": "Release",
            "arid": "mr45LNQePX",
            "title": "Stella & Steve",
            "format": "EP",
            "artwork": [],
            "links": [
              {
                "entity": "Link",
                "arid": "mlV0JZbO20",
                "url": "http://musicbrainz.org/release-group/9d0271c7-6448-4cbf-a335-0221e34a73ae",
                "id_component": "9d0271c7-6448-4cbf-a335-0221e34a73ae",
                "title": "MusicBrainz release-group",
                "mini_synopsis": null,
                "short_synopsis": null,
                "medium_synopsis": null,
                "type": "service",
                "provider": "musicbrainz",
                "external": true
              }
            ],
            "artists": [
              {
                "entity": "Artist",
                "arid": "ma35vZnl5B",
                "name": "Benee",
                "artwork": [],
                "links": [
                  {
                    "entity": "Link",
                    "arid": "mlb5b4r7A0",
                    "url": "http://musicbrainz.org/artist/c352c56b-a610-4fc4-884c-704547ef30f5",
                    "id_component": "c352c56b-a610-4fc4-884c-704547ef30f5",
                    "title": "MusicBrainz artist",
                    "mini_synopsis": null,
                    "short_synopsis": null,
                    "medium_synopsis": null,
                    "type": "service",
                    "provider": "musicbrainz",
                    "external": true
                  }
                ],
                "is_australian": null,
                "type": "primary",
                "role": null
              }
            ],
            "record_label": null,
            "release_year": null,
            "release_album_id": null
          }
        ],
        "artwork": [],
        "links": [
          {
            "entity": "Link",
            "arid": "mlwkZWz960",
            "url": "http://musicbrainz.org/recording/2772cd61-892c-47ab-bc0e-1ca775ebe6f4",
            "id_component": "2772cd61-892c-47ab-bc0e-1ca775ebe6f4",
            "title": "MusicBrainz recording",
            "mini_synopsis": null,
            "short_synopsis": null,
            "medium_synopsis": null,
            "type": "service",
            "provider": "musicbrainz",
            "external": true
          }
        ]
      },
      "release": {
        "entity": "Release",
        "arid": "mr45LNQePX",
        "title": "Stella & Steve",
        "format": "EP",
        "artwork": [],
        "links": [
          {
            "entity": "Link",
            "arid": "mlV0JZbO20",
            "url": "http://musicbrainz.org/release-group/9d0271c7-6448-4cbf-a335-0221e34a73ae",
            "id_component": "9d0271c7-6448-4cbf-a335-0221e34a73ae",
            "title": "MusicBrainz release-group",
            "mini_synopsis": null,
            "short_synopsis": null,
            "medium_synopsis": null,
            "type": "service",
            "provider": "musicbrainz",
            "external": true
          }
        ],
        "artists": [
          {
            "entity": "Artist",
            "arid": "ma35vZnl5B",
            "name": "Benee",
            "artwork": [],
            "links": [
              {
                "entity": "Link",
                "arid": "mlb5b4r7A0",
                "url": "http://musicbrainz.org/artist/c352c56b-a610-4fc4-884c-704547ef30f5",
                "id_component": "c352c56b-a610-4fc4-884c-704547ef30f5",
                "title": "MusicBrainz artist",
                "mini_synopsis": null,
                "short_synopsis": null,
                "medium_synopsis": null,
                "type": "service",
                "provider": "musicbrainz",
                "external": true
              }
            ],
            "is_australian": null,
            "type": "primary",
            "role": null
          }
        ],
        "record_label": null,
        "release_year": null,
        "release_album_id": null
      }
    }
  ]
}

Вот структура классов, сгенерированная Visual Studio:

Public Class JSON_Class

    Public Class Rootobject
        Public Property total As Integer
        Public Property offset As Integer
        Public Property items() As Item
    End Class

    Public Class Item
        Public Property entity As String
        Public Property arid As String
        Public Property played_time As Date
        Public Property service_id As String
        Public Property recording As Recording
        Public Property release As Release1
    End Class

    Public Class Recording
        Public Property entity As String
        Public Property arid As String
        Public Property title As String
        Public Property metadata As Object
        Public Property description As Object
        Public Property duration As Integer
        Public Property artists() As Artist
        Public Property releases() As Release
        Public Property artwork() As Object
        Public Property links() As Object
    End Class

    Public Class Artist
        Public Property entity As String
        Public Property arid As String
        Public Property name As String
        Public Property artwork() As Object
        Public Property links() As Object
        Public Property is_australian As Object
        Public Property type As String
        Public Property role As Object
    End Class

    Public Class Release
        Public Property entity As String
        Public Property arid As String
        Public Property title As String
        Public Property format As String
        Public Property artwork() As Object
        Public Property links() As Object
        Public Property artists() As Artist1
        Public Property record_label As Object
        Public Property release_year As Object
        Public Property release_album_id As Object
    End Class

    Public Class Artist1
        Public Property entity As String
        Public Property arid As String
        Public Property name As String
        Public Property artwork() As Object
        Public Property links() As Object
        Public Property is_australian As Object
        Public Property type As String
        Public Property role As Object
    End Class

    Public Class Release1
        Public Property entity As String
        Public Property arid As String
        Public Property title As String
        Public Property format As String
        Public Property artwork() As Object
        Public Property links() As Object
        Public Property artists() As Artist2
        Public Property record_label As Object
        Public Property release_year As Object
        Public Property release_album_id As Object
    End Class

    Public Class Artist2
        Public Property entity As String
        Public Property arid As String
        Public Property name As String
        Public Property artwork() As Object
        Public Property links() As Object
        Public Property is_australian As Object
        Public Property type As String
        Public Property role As Object
    End Class

End Class

Я десериализирую свои данные, используя эту строку: (где JSON_Class - это структура класса, а New_JSON_Content - необработанный JSON)

Dim JSON_Wrapper = JsonConvert.DeserializeObject(Of JSON_Class)(New_JSON_Content)

Каким будет мой следующий шаг, если я скажу, что я хотел получить доступ к какой-либо одной указанной c переменной из заполненной структуры классов? Спасибо!

1 Ответ

0 голосов
/ 21 февраля 2020

Причина, по которой вы не видите никаких данных, заключается в том, что JSON_Class, класс, к которому вы десериализуетесь, не содержит членов. Код работает; он делает именно то, что вы говорите - создать экземпляр JSON_Class - который ничего не содержит - из этой строки JSON. JSON токены, которые не соответствуют ничему в типе десериализации, игнорируются, что в данном случае является всем.

Чтобы это работало, вместо этого выполните десериализацию до JSON_Class.Rootobject. Вам также не нужно вкладывать свои классы десериализации в содержащий класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...