Arrays Can';t访问JSON字符串的第二级
对于一个编程学校项目,我正在制作一个天气应用程序,在那里我需要显示当前的温度。在JSON字符串中,当前temp处于第二级,我不知道如何访问它。在未来,我还想访问此字符串中包含的每小时和每日预测-如果您对如何实现这一点有任何想法的话。任何帮助都将不胜感激。以下是我的数据:Arrays Can';t访问JSON字符串的第二级,arrays,json,vb.net,parsing,Arrays,Json,Vb.net,Parsing,对于一个编程学校项目,我正在制作一个天气应用程序,在那里我需要显示当前的温度。在JSON字符串中,当前temp处于第二级,我不知道如何访问它。在未来,我还想访问此字符串中包含的每小时和每日预测-如果您对如何实现这一点有任何想法的话。任何帮助都将不胜感激。以下是我的数据: { "latitude":- 32.9283, "longitude":151.7817, "timezone":"Australia/Sydney", "currently":{
{
"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:'从JsonReader读取JArray时出错。当前JsonReader项不是数组:StartObject。路径“”,第1行,位置1。“
就像错误所说的那样,“当前”不是数组,而是对象。数组使用方括号[]
表示,而对象使用大括号{}
请尝试以下方法:
Dim currentlyObject As JObject = DirectCast(jsonObject("currently"), JObject)
'Example usage.
MessageBox.Show(currentlyObject("temperature"))
非常感谢您的大力帮助。@M.Green:很高兴我能帮忙!祝您编码顺利,欢迎使用Stack Overflow!