Для проекта школы программирования я создаю приложение погоды, в котором мне нужно отображать текущую температуру. В строке JSON текущий темп находится на втором уровне, который я не могу понять, как получить доступ. В будущем я также хотел бы получить доступ к ежечасным и ежедневным прогнозам, включенным в эту строку - если у вас есть идеи, как это сделать. Любая помощь будет оценена. Вот мои данные:
{
"latitude":- 32.9283,
"longitude":151.7817,
"timezone":"Australia/Sydney",
"currently":{
"time":1546405401,
"summary":"Clear",
"icon":"clear-day",
"precipIntensity":0,
"precipProbability":0,
"temperature":93.03,
"apparentTemperature":93.03,
"dewPoint":58.07,
"humidity":0.31,
"pressure":1009.17,
"windSpeed":14.77,
"windGust":19.66,
"windBearing":68,
"cloudCover":0,
"uvIndex":7,
"visibility":7.75,
"ozone":276.4
},
"hourly":{
"summary":"Clear throughout the day.",
"icon":"clear-day",
"data":[
{
"time":1546405200,
"summary":"Clear",
"icon":"clear-day",
"precipIntensity":0,
"precipProbability":0,
"temperature":93.25,
"apparentTemperature":93.25,
"dewPoint":57.89,
"humidity":0.31,
"pressure":1009.18,
"windSpeed":14.78,
"windGust":19.53,
"windBearing":68,
"cloudCover":0,
"uvIndex":7,
"visibility":7.58,
"ozone":276.43
},
{
"time":1546408800,
"summary":"Clear",
"icon":"clear-day",
"precipIntensity":0,
"precipProbability":0,
"temperature":89.44,
"apparentTemperature":89.44,
"dewPoint":60.5,
"humidity":0.38,
"pressure":1008.99,
"windSpeed":14.58,
"windGust":21.84,
"windBearing":66,
"cloudCover":0,
"uvIndex":4,
"visibility":10,
"ozone":275.8
},
...
Вот мой код:
Imports System.IO
Imports System.Net
Imports System.Drawing
Imports System.Web.Script.Serialization
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Dim request As HttpWebRequest
Dim response As HttpWebResponse = Nothing
Dim reader As StreamReader
request = DirectCast(WebRequest.Create("https://api.darksky.net/forecast/412498ac9648999c8185723817a897d3/-32.9283,151.7817"), HttpWebRequest)
response = DirectCast(request.GetResponse(), HttpWebResponse)
reader = New StreamReader(response.GetResponseStream())
Dim data As String
data = reader.ReadToEnd()
Dim jsonObject As JObject = JObject.Parse(data)
MessageBox.Show(jsonObject.SelectToken("currently").ToString)
Dim JsonArray As JArray = JArray.Parse(jsonObject.SelectToken("currently").ToString)
MessageBox.Show(jsonObject.SelectToken("temperature").ToString)
Сообщение об ошибке:
Newtonsoft.Json.JsonReaderException: 'Ошибка чтения JArray из JsonReader. Текущий элемент JsonReader не является массивом: StartObject. Путь '', строка 1, позиция 1. '