如何从JSON响应中获取特定值?

时间:2020-08-08 23:23:38

标签: json vb.net

我想从对以下资源的请求的JSON响应中获取"playCount"(144200)的值:https://www.tiktok.com/node/share/video/@scout2015/6718335390845095173?request_from=server

lbl_Views.Text设置为Nothing,而不是playCount的值:

 Public Sub getCount()
    Dim request As HttpWebRequest
    Dim response As HttpWebResponse = Nothing
    Dim reader As StreamReader
    Try
        request = DirectCast(WebRequest.Create("https://www.tiktok.com/node/share/video/@scout2015/6718335390845095173?request_from=server"), HttpWebRequest)
        response = DirectCast(request.GetResponse(), HttpWebResponse)
        reader = New StreamReader(response.GetResponseStream())
        Dim rawresp As String
        rawresp = reader.ReadToEnd()    
        lbl_Views.Text = JObject.Parse(rawresp)("playCount")

    Catch ex As Exception             
    End Try
End Sub

响应JSON:

{"body":{"pageState":{"regionAppId":1233,"os":"windows","region":"NL","baseURL":"m.tiktok.com","appType":"t","fullUrl":"https://www.tiktok.com/node/share/video/@scout2015/6718335390845095173?request_from=server"},"videoData":{"itemInfos":{"id":"6718335390845095173","video":{"urls":["https://v16m.tiktokcdn.com/1cdd189bdb8084c75d4a525bf1a5300c/5f31d62a/video/tos/useast2a/tos-useast2a-ve-0068/15fbafb086324317bf77a649580b1f95/?a=1233&br=4778&bt=2389&cr=0&cs=0&dr=0&ds=3&er=&l=202008082320100101901871634478C3D6&lr=tiktok_m&mime_type=video_mp4&qs=0&rc=M245aWhvZ3U4bjMzZzczM0ApOTtmOzdoaDtnNzM5aTo1ZGczc29gcGdnMXJfLS01MTZzczI2L2FiLWFeLzI0MmJhYV86Yw%3D%3D&vl=&vr="],"videoMeta":{"width":720,"height":1280,"ratio":10,"duration":10}},"covers":["https://p16-tiktok-va.ibyteimg.com/obj/tos-maliva-p-0068/06kv6rfcesljdjr45ukb0000d844090v0200000a05?x-expires=1597100400&x-signature=z45sOdB2duRdLUYMFvUNX33%2BlLg%3D"],"authorId":"53279706535428096","coversOrigin":["https://p16-tiktok-va.ibyteimg.com/obj/tos-maliva-p-0068/8ac0190d8ad54535bf823ed5f3202b6b?x-expires=1597100400&x-signature=IJrZdxbGo34BQkNLkuwi9OjZLNA%3D"],"shareCover":["","https://p16-tiktok-va.ibyteimg.com/tos-maliva-p-0068/8ac0190d8ad54535bf823ed5f3202b6b~tplv-tiktok-play.jpeg?x-expires=1597100400&x-signature=UV%2BNkLSQ1b5Q7rIJFuQDSzrQAcY%3D","https://p16-tiktok-va.ibyteimg.com/tos-maliva-p-0068/8ac0190d8ad54535bf823ed5f3202b6b~tplv-tiktok-play2.jpeg?x-expires=1597100400&x-signature=Qwn781I6T0k3cp0u0ms7hXlt34U%3D"],"text":"Scramble up ur name & I’ll try to guess it?❤️ #foryoupage #petsoftiktok #aesthetic","commentCount":9054,"diggCount":33700,"playCount":144200,"shareCount":793,"createTime":"1564234358","isActivityItem":false,"warnInfo":[],"liked":false,"commentStatus":0,"showNotPass":false},"authorInfos":{"verified":true,"secUid":"MS4wLjABAAAAPZWNdkF_cmVSPCvV0Y6MCsH29mlAOlMOX3ikzGvlfMm3K6OMZv-JrRImpEHxdIMI","uniqueId":"scout2015","userId":"53279706535428096","nickName":"Scout and Suki","covers":["https://p16-va-tiktok.ibyteimg.com/img/musically-maliva-obj/3c3deb8e39fe38fd856147bc5c598ba9~c5_100x100.jpeg"],"relation":-1},"musicInfos":{"musicId":"6689804660171082501","musicName":"original sound","authorName":"???????","covers":["https://p16-va-tiktok.ibyteimg.com/img/musically-maliva-obj/adf0c5e7b9ee237c29c4350fa892167a~c5_100x100.jpeg"]},"authorStats":{"followerCount":3700000,"heartCount":"53800000"},"challengeInfoList":[{"challengeId":"88764338","challengeName":"foryoupage"},{"challengeId":"1591463963924482","challengeName":"PetsOfTikTok"},{"challengeId":"22816","challengeName":"aesthetic"},{"challengeId":"1640531969897478","challengeName":"bonevoyage"}],"duetInfo":"0","textExtra":[{"AwemeId":"","Start":47,"End":58,"HashtagName":"foryoupage","HashtagId":"","Type":1,"UserId":"","IsCommerce":false},{"AwemeId":"","Start":59,"End":72,"HashtagName":"petsoftiktok","HashtagId":"","Type":1,"UserId":"","IsCommerce":false},{"AwemeId":"","Start":73,"End":83,"HashtagName":"aesthetic","HashtagId":"","Type":1,"UserId":"","IsCommerce":false}],"stickerTextList":[]},"shareUser":{"secUid":"","userId":"","uniqueId":"","nickName":"","signature":"","covers":[],"coversMedium":[],"coversLarger":[],"isSecret":false,"relation":-1},"shareMeta":{"title":"Scout and Suki on TikTok","desc":"Scramble up ur name & I’ll try to guess it?❤️ #foryoupage #petsoftiktok #aesthetic","image":{"url":"https://p16-tiktok-va.ibyteimg.com/tos-maliva-p-0068/8ac0190d8ad54535bf823ed5f3202b6b~tplv-tiktok-play2.jpeg?x-expires=1597100400&x-signature=Qwn781I6T0k3cp0u0ms7hXlt34U%3D","width":720,"height":1280}},"statusCode":0,"langList":[{"value":"id","alias":"id-ID","label":"Bahasa Indonesia","children":[{"value":"default","label":""}]},{"value":"de","alias":"de-DE","label":"Deutsch","children":[{"value":"default","label":""}]},{"value":"en","alias":"en","label":"English","children":[{"value":"default","label":""}]},{"value":"es","alias":"es","label":"Español","children":[{"value":"default","label":""}]},{"value":"fr","alias":"fr","label":"Français","children":[{"value":"default","label":""}]},{"value":"it","alias":"it-IT","label":"Italiano","children":[{"value":"default","label":""}]},{"value":"pl","alias":"pl-PL","label":"Polski","children":[{"value":"default","label":""}]},{"value":"pt_BR","alias":"pt-BR","label":"Português","children":[{"value":"default","label":""}]},{"value":"vi","alias":"vi-VN","label":"Tiếng Việt","children":[{"value":"default","label":""}]},{"value":"tr","alias":"tr-TR","label":"Türkçe","children":[{"value":"default","label":""}]},{"value":"ru","alias":"ru-RU","label":"Русский","children":[{"value":"default","label":""}]},{"value":"hi","alias":"hi-IN","label":"हिन्दी","children":[{"value":"default","label":""}]},{"value":"ko","alias":"ko-KR","label":"한국어","children":[{"value":"default","label":""}]},{"value":"ja","alias":"ja-JP","label":"日本語","children":[{"value":"default","label":""}]},{"value":"zh_Hant","alias":"zh-Hant-TW","label":"繁體中文","children":[{"value":"default","label":""}]},{"value":"ar","alias":"ar","label":"العربية","children":[{"value":"default","label":""}]}],"webId":"6858756999288473093","requestId":"10164662596928810257","metaParams":{"robotsContent":"index, follow","title":"Scramble up ur name & I’ll try to guess it?❤️ #foryoupage #petsoftiktok #aesthetic","keywords":"scout2015, Scout and Suki, TikTok, ティックトック, tik tok, tick tock, tic tok, tic toc, tictok, тик ток, ticktock,foryoupage,PetsOfTikTok,aesthetic,bonevoyage","description":"Scout and Suki (@scout2015) has created a short video on TikTok with music original sound. Scramble up ur name & I’ll try to guess it?❤️ #foryoupage #petsoftiktok #aesthetic","canonicalHref":"https://www.tiktok.com/@scout2015/video/6718335390845095173?lang=en","alternateHref":null,"amphtmlHref":null,"applicableDevice":"pc, mobile"},"videoObjectPageProps":{}},"statusCode":0,"errMsg":null}

1 个答案:

答案 0 :(得分:0)

解析解析原始响应时创建的JObject。如果您知道每次请求资源时都保证结构相同,那么这应该可以工作:

Public Sub getCount()
   Dim request As HttpWebRequest
   Dim response As HttpWebResponse = Nothing
   Dim reader As StreamReader
   Try
      request = DirectCast(WebRequest.Create("https://www.tiktok.com/node/share/video/@scout2015/6718335390845095173?request_from=server"), HttpWebRequest)
            response = DirectCast(request.GetResponse(), HttpWebResponse)
            reader = New StreamReader(response.GetResponseStream())
            Dim rawresp As String
            rawresp = reader.ReadToEnd()
            Dim jobjRes As JObject = JObject.Parse(rawresp)
            lbl_Views.Text = jobjRes("body")("videoData")("itemInfos")("playCount") 'Should equal "144200"
   Catch ex As Exception
   End Try
End Sub