#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 StudioNuGet Package Manager
). Вам не нужно ничего зацикливать, вам просто нужно создать модель класса, которая описывает JSON. Глядя на структуру JSON здесь, внутренняяPaste JSON as Classes
функция Visual Studio, вероятно, должна сделать это правильно. Поскольку JSON содержит больше объектов, которые начинаются сTitle
описания песни, у вас будетList<Song>
после десериализации.