Как анализировать данные Json со многими переменными?

#json #vb.net

#json #vb.net

Вопрос:

Как я могу проанализировать код Json с разными переменными, но с тем же идентификатором. Я объясню, я новичок в использовании Json, поэтому я хочу проанализировать :

 {"title": {
   "runs": [
     {
   "text": "Peter Tosh - Legalize It"
     }
   ],
   "accessibility": {
     "accessibilityData": {
   "label": "Peter Tosh - Legalize It by Bondade é Nosso Hábito 8 years ago 4 minutes, 46 seconds"
     }
   }
 },
 "index": {
   "simpleText": "1"
 },
 "shortBylineText": {
   "runs": [
     {
   "text": "Bondade é Nosso Hábito",
   "navigationEndpoint": {
     "clickTrackingParams": "CD0QxjQYACITCMn2heSTz-wCFUmw1Qod1hMDdw==",
     "commandMetadata": {
       "webCommandMetadata": {
         "url": "/user/Bruno12170",
         "webPageType": "WEB_PAGE_TYPE_CHANNEL",
         "rootVe": 3611
       }
     },
     "browseEndpoint": {
       "browseId": "UCY1IJY2IYNVfD7R-JbgQGbQ",
       "canonicalBaseUrl": "/user/Bruno12170"
     }
   }
     }
   ]
 },
 "lengthText": {
   "accessibility": {
     "accessibilityData": {
   "label": "4 minutes, 46 seconds"
     }
   },
   "simpleText": "4:46"
 },
 "navigationEndpoint": {
   "clickTrackingParams": "CD0QxjQYACITCMn2heSTz-wCFUmw1Qod1hMDdzIKcGxwcF92aWRlb1okVkxQTDRfRHg4OGRwdTdlcGZINnlid3FKcGY5dUwydEFsMzY4mgEDEPos",
   "commandMetadata": {
     "webCommandMetadata": {
   "url": "/watch?v=j6QkVTx2d88amp;list=PL4_Dx88dpu7epfH6ybwqJpf9uL2tAl368amp;index=1",
   "webPageType": "WEB_PAGE_TYPE_WATCH",
   "rootVe": 3832
     }}}
  

Что я хочу разобрать из этого:

«текст»: «Питер Тош — легализуй это»

«url»: «/watch?v=j6QkVTx2d88amp;list=PL4_Dx88dpu7epfH6ybwqJpf9uL2tAl368amp;index=1

Как я могу проанализировать их на странице, где много элементов (песен)? Как я могу использовать для каждого, чтобы сделать это? Спасибо

правка1:

   Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click

        Dim wc As New Net.WebClient
        Dim incstr As IO.Stream = Nothing


        incstr = wc.OpenRead("https://www.youtube.com/playlist?list=PL4_Dx88dpu7epfH6ybwqJpf9uL2tAl368")

        Using rd As New IO.StreamReader(incstr)
            RichTextBox1.Text = rd.ReadToEnd
        End Using
    End Sub

    Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
        Dim o As String = ("{""title"":  {
   ""runs"": [
     {
   ""text"": ""Peter Tosh - Legalize It""
     }
   ],
   ""accessibility"": {
     ""accessibilityData"": {
   ""label"": ""Peter Tosh - Legalize It by Bondade é Nosso Hábito 8 years ago 4 minutes, 46 seconds""
     }
   }
 },
 ""index"": {
   ""simpleText"": ""1""
 },
 ""shortBylineText"": {
   ""runs"": [
     {
   ""text"": ""Bondade é Nosso Hábito"",
   ""navigationEndpoint"": {
     ""clickTrackingParams"": ""CD0QxjQYACITCMn2heSTz-wCFUmw1Qod1hMDdw=="",
     ""commandMetadata"": {
       ""webCommandMetadata"": {
         ""url"": ""/user/Bruno12170"",
         ""webPageType"": ""WEB_PAGE_TYPE_CHANNEL"",
         ""rootVe"": 3611
       }
     },
     ""browseEndpoint"": {
       ""browseId"": ""UCY1IJY2IYNVfD7R-JbgQGbQ"",
       ""canonicalBaseUrl"": ""/user/Bruno12170""
     }
   }
     }
   ]
 },
 ""lengthText"": {
   ""accessibility"": {
     ""accessibilityData"": {
   ""label"": ""4 minutes, 46 seconds""
     }
   },
   ""simpleText"": ""4:46""
 },
 ""navigationEndpoint"": {
   ""clickTrackingParams"": ""CD0QxjQYACITCMn2heSTz-wCFUmw1Qod1hMDdzIKcGxwcF92aWRlb1okVkxQTDRfRHg4OGRwdTdlcGZINnlid3FKcGY5dUwydEFsMzY4mgEDEPos"",
   ""commandMetadata"": {
     ""webCommandMetadata"": {
   ""url"": ""/watch?v=j6QkVTx2d88amp;list=PL4_Dx88dpu7epfH6ybwqJpf9uL2tAl368amp;index=1"",
   ""webPageType"": ""WEB_PAGE_TYPE_WATCH"",
   ""rootVe"": 3832
     } } }")
        Dim webLink = JObject.Parse(o)("navigationEndpoint")("commandMetadata")("webCommandMetadata")("url")
        MsgBox(webLink)
    End Sub

  

К сожалению, это не работает.. Что я делаю не так?

Комментарии:

1. С моделью класса и Json. Net или System.Text.Json. В этом JSON отсутствует вложенный { и еще два в конце (всего три: }}} ), Так что у вас, вероятно, есть частичный JSON.

2. Да, это всего лишь частичный Json, страница довольно большая с множеством подобных песен. Я постараюсь просмотреть некоторую документацию о том, что вы мне предложили.

3. Ну, если у вас действительно есть полный JSON, тогда проблем нет. Вы можете найти некоторые онлайновые ресурсы, которые обеспечивают преобразование из JSON в . Сетевые классы. После того, как у вас есть модель (структура классов), десериализация JSON выполняется одной командой.

4. Я надеюсь, что это так, я загружаю исходный код плейлиста YouTube, поэтому я предполагаю, что Json завершен… Я читаю некоторую документацию о System.Text.Json, но многие из них предназначены для отдельных элементов. Но в случае многих переменных, в моем случае это песни, как я могу создать цикл, чтобы найти все из них существующими?

5. System.Text. Json связан с . Сетевое ядро. Если вы используете . Net Framework, установите Json. Net ( Newtonsoft.Json с использованием Visual Studio NuGet Package Manager ). Вам не нужно ничего зацикливать, вам просто нужно создать модель класса, которая описывает JSON. Глядя на структуру JSON здесь, внутренняя Paste JSON as Classes функция Visual Studio, вероятно, должна сделать это правильно. Поскольку JSON содержит больше объектов, которые начинаются с Title описания песни, у вас будет List<Song> после десериализации.