Oppure

Loading
22/09/13 18:04
swet
Ragazzi ciao a tutti, sto cercando di prendere dei dati in formato Json da un sito web, e importarli in un array in vb.net, per fare questo uso la libreria in oggetto e questo codice:
Imports System.Net
Imports System.IO
Imports System.Linq
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim request As HttpWebRequest
        Dim response As HttpWebResponse = Nothing
        Dim reader As StreamReader

        Try

            request = DirectCast(WebRequest.Create("http://miositoweb/connectDb.php"), HttpWebRequest)
            response = DirectCast(request.GetResponse(), HttpWebResponse)
            reader = New StreamReader(response.GetResponseStream())

            Dim rawresp As String
            rawresp = reader.ReadToEnd()

            Dim jResults As JObject = JObject.Parse(JObject.Parse(rawresp))
            Dim results As List(Of JToken) = jResults.Children().ToList()

            For Each item As JProperty In results
                item.CreateReader()
                MsgBox(item.Value("img")) ' because my tag in json is img

            Next

        Catch ex As Exception
            Console.WriteLine(ex.ToString)
            MsgBox(ex.ToString)
        Finally
            If Not response Is Nothing Then response.Close()
        End Try
    End Sub
End Class


ma , quando lo eseguo ricevo questo errore:

Eccezione first-chance di tipo 'Newtonsoft.Json.JsonReaderException' in Newtonsoft.Json.dll
Newtonsoft.Json.JsonReaderException: Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path '', line 1, position 1.
   in Newtonsoft.Json.Linq.JObject.Load(JsonReader reader)
   in Newtonsoft.Json.Linq.JObject.Parse(String json)
   in NHD.Form1.Form1_Load(Object sender, EventArgs e) in C:\Users\Davide\Documents\Visual Studio 2012\Projects\NHD\NHD\Form1.vb:riga 22


Sapete aiutarmi?

Grazie
aaa
23/09/13 18:07
Dedalux
Riga 22: perchè fai

Dim jResults As JObject = JObject.Parse(JObject.Parse(rawresp))

2 volte?

l'errore che ti da dice che jResults è = Nothing, forse volevi fare .Load?
Ultima modifica effettuata da Dedalux 23/09/13 18:10
aaa
24/09/13 8:08
swet
Ciao, ho sbagliato a postare il sorgente, mi ero accorto di quell' errore e l' ho corretto, ora il problema è alla linea 23:

  Dim request As HttpWebRequest
        Dim response As HttpWebResponse = Nothing
        Dim reader As StreamReader
        Label1.Text = ("Gli appuntamenti di oggi:  " + Now().Date)
       
        Try

            request = DirectCast(WebRequest.Create("http://nhd.altervista.org/connectDb.php"), HttpWebRequest)
            response = DirectCast(request.GetResponse(), HttpWebResponse)
            reader = New StreamReader(response.GetResponseStream())

            Dim rawresp As String
            rawresp = reader.ReadToEnd()

            Dim jResults As JObject = JObject.Parse(rawresp)
            Dim results As List(Of JToken) = jResults.Children().ToList()

            For Each item As JProperty In results
                item.CreateReader()
                MsgBox(item.Value("Nome")) ' because my tag in json is nome

            Next

        Catch ex As Exception
            Console.WriteLine(ex.ToString)
            MsgBox(ex.ToString)
        Finally
            If Not response Is Nothing Then response.Close()
        End Try


l'errore è :

Eccezione first-chance di tipo 'Newtonsoft.Json.JsonReaderException' in Newtonsoft.Json.dll
Newtonsoft.Json.JsonReaderException: Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path '', line 1, position 1.
   in Newtonsoft.Json.Linq.JObject.Load(JsonReader reader)
   in Newtonsoft.Json.Linq.JObject.Parse(String json)
   in NHD.Form1.Form1_Load(Object sender, EventArgs e) in C:\Users\Davide\Documents\Visual Studio 2012\Projects\NHD\NHD\Form1.vb:riga 23


Sto seguendo questa guida howifixed.it/vb-net-get-json-from-url-and-parse/
aaa