Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Can';t访问JSON字符串的第二级_Arrays_Json_Vb.net_Parsing - Fatal编程技术网

Arrays Can';t访问JSON字符串的第二级

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":{

对于一个编程学校项目,我正在制作一个天气应用程序,在那里我需要显示当前的温度。在JSON字符串中,当前temp处于第二级,我不知道如何访问它。在未来,我还想访问此字符串中包含的每小时和每日预测-如果您对如何实现这一点有任何想法的话。任何帮助都将不胜感激。以下是我的数据:

{
    "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!