Извлечение данных из JSON ответа на список или массив в VB.Net - PullRequest
0 голосов
/ 14 января 2020

Я не совсем понимаю структуру JSON, поэтому я изо всех сил стараюсь адаптировать другие ответы в соответствии со своими потребностями. Я действительно надеюсь, что кто-то может помочь? В частности, я хочу получить список или массив «возвышений» из следующего ответа JSON в VB. Мне удалось получить ответ в строку и проанализировать его, но это насколько я получил.

VB. Net:

Imports Newtonsoft.Json.Linq

Dim urlstring As String = urlstring1 & coordstring & urlstring2
Dim srequest As HttpWebRequest = DirectCast(WebRequest.Create(urlstring), HttpWebRequest)
Dim responsestring As String
        'Execute http enquiry
        Try
            Dim sresponse As New StreamReader(srequest.GetResponse().GetResponseStream())
            responsestring = sresponse.ReadToEnd()
            sresponse.Close()
            'MessageBox.Show(responsestring)
        Catch ex As Exception
            MessageBox.Show("Error getting elevations, check internet connection")
            GoTo X
        End Try

Dim ser As JObject = JObject.Parse(responsestring)

JSON:

{  
   "authenticationResultCode":"ValidCredentials",  
   "brandLogoUri":"http:\/\/dev.virtualearth.net\/Branding\/logo_powered_by.png",  
   "copyright":"Copyright © 2012 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.",  
   "resourceSets":[  
      {  
         "estimatedTotal":1,  
         "resources":[  
            {  
               "__type":"ElevationData:http:\/\/schemas.microsoft.com\/search\/local\/ws\/rest\/v1",  
               "elevations":[1776,1775,1777,1776],  
               "zoomLevel":14  
            }  
         ]  
      }  
   ],  
   "statusCode":200,  
   "statusDescription":"OK",  
   "traceId":"8d57dbeb0bb94e7ca67fd25b4114f5c3"  
}

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Добавление ответа CruleD на мой код:

Imports Newtonsoft.Json.Linq

Dim urlstring As String = urlstring1 & coordstring & urlstring2
Dim srequest As HttpWebRequest = DirectCast(WebRequest.Create(urlstring), HttpWebRequest)
Dim responsestring As String
'Execute http enquiry
Try
            Dim sresponse As New StreamReader(srequest.GetResponse().GetResponseStream())
            responsestring = sresponse.ReadToEnd()
            sresponse.Close()

Catch ex As Exception
            MessageBox.Show("Error getting elevations, check internet connection")
            GoTo X
End Try

Dim ser As JObject = JObject.Parse(responsestring)
For Each token As JToken In ser("resourceSets")(0)("resources")(0)("elevations")
            'Do something here with each item in the list such as add to an array
            'e.g. elevationarray(tokennumber) = token
            'tokennumber = tokennumber + 1
Next
0 голосов
/ 14 января 2020

Используйте что-то, что поможет вам визуализировать, например, https://jsonformatter.curiousconcept.com/ Сверните все, затем разверните и укажите свой путь.

Когда вы доберетесь до {}, вы набираете имя, когда вы получаете [] вы вводите число.

YourArray = ser ("resourceSets") (0) ("resources") (0) ("повышения прав")

...