I'm trying to read URL containing JSON
Reading the file in the URL is ok, but when trying to parse the JSON I get an error:
An unhandled exception of type 'Newtonsoft.Json.JsonReaderException' occurred in Newtonsoft.Json.dll
Additional information: Error reading JObject from JsonReader. Current JsonReader item is not an object: StartArray. Path '', line 2, position 2.
The code:
Dim request As HttpWebRequest
Dim response As HttpWebResponse = Nothing
Dim reader As StreamReader
request = DirectCast(WebRequest.Create("http://phvarde.kundeside.dk/json?key=t6%$SVAKsG39"), HttpWebRequest)
response = DirectCast(request.GetResponse(), HttpWebResponse)
reader = New StreamReader(response.GetResponseStream())
Dim rawresp As String
rawresp = reader.ReadToEnd()
Dim jResults As Object = JObject.Parse(rawresp)
TxtFornavn.Text = If(jResults("name") Is Nothing, "", jResults("name").ToString())
TxtAdresse.Text = If(jResults("address") Is Nothing, "", jResults("address").ToString())
You are getting this error because your JSON represents an array of objects, not just a single object. In this case you need to use JArray.Parse
instead of JObject.Parse
.
Dim array As JArray = JArray.Parse(json)
For Each item As JObject In array
Dim name As String = If(item("name") Is Nothing, "", item("name").ToString())
Dim address As String = If(item("address") Is Nothing, "", item("address").ToString())
// ... process name and address ...
Next
Fiddle: https://dotnetfiddle.net/2wfA17
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.