I'm receiving JSON via HTTP request. I'm writing the JSON array into a string
getResult = ReadHttpContent.ReadToEnd()
I then use the following code to read the data.
Dim ser As New System.Web.Script.Serialization.JavaScriptSerializer
Dim results As JSON_PostionList = DirectCast(ser.Deserialize(Of JSON_PostionList)(getResult.ToString), JSON_PostionList)
The problem is results is nothing.
Friend Class JSON_PostionList
Friend positionList() As JSON_Position
End Class
Friend Class JSON_Position
Friend deviceID As String
Friend coordinate() As JSON_Coordinates
Friend speed As String
Friend ignitionState As String
Friend dateTime() As JSON_dateTime
End Class
Friend Class JSON_Coordinates
Friend Latitude As Decimal
Friend Longitude As Decimal
End Class
Friend Class JSON_dateTime
Friend Year As Integer
Friend Month As Integer
Friend Day As Integer
Friend Hour As Integer
Friend Minute As Integer
Friend Seconds As Integer
Friend Timezone As String
End Class
I've looked at other examples and I can't see what I'm doing wrong.
The JSON is below
{"positionList":[{"deviceId":"27","coordinate":{"latitude":51.918739318848,"longitude":19.720266342163},"speed":0,"ignitionState":"OFF","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":31,"seconds":6,"timezone":"UTC"}},{"deviceId":"33","coordinate":{"latitude":52.355289459229,"longitude":21.748106002808},"speed":0,"ignitionState":"OFF","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":33,"seconds":39,"timezone":"UTC"}},{"deviceId":"70","coordinate":{"latitude":51.918880462646,"longitude":19.720336914062},"speed":0,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":34,"seconds":25,"timezone":"UTC"}},{"deviceId":"30","coordinate":{"latitude":51.658668518066,"longitude":15.133635520935},"speed":0,"ignitionState":"OFF","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":35,"seconds":4,"timezone":"UTC"}},{"deviceId":"2","coordinate":{"latitude":51.158256530762,"longitude":16.171270370483},"speed":0,"ignitionState":"OFF","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":36,"seconds":57,"timezone":"UTC"}},{"deviceId":"18","coordinate":{"latitude":50.036727905273,"longitude":20.028551101685},"speed":0,"ignitionState":"OFF","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":40,"seconds":14,"timezone":"UTC"}},{"deviceId":"26","coordinate":{"latitude":51.475696563721,"longitude":3.6968178749084},"speed":0,"ignitionState":"OFF","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":40,"seconds":51,"timezone":"UTC"}},{"deviceId":"85","coordinate":{"latitude":51.918560028076,"longitude":19.720746994019},"speed":0,"ignitionState":"OFF","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":41,"seconds":43,"timezone":"UTC"}},{"deviceId":"29","coordinate":{"latitude":52.045883178711,"longitude":4.4028444290161},"speed":0,"ignitionState":"OFF","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":42,"seconds":28,"timezone":"UTC"}},{"deviceId":"16","coordinate":{"latitude":52.355323791504,"longitude":21.748266220093},"speed":0,"ignitionState":"OFF","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":45,"seconds":6,"timezone":"UTC"}},{"deviceId":"34","coordinate":{"latitude":49.350063323975,"longitude":11.100284576416},"speed":13,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":45,"seconds":23,"timezone":"UTC"}},{"deviceId":"4","coordinate":{"latitude":51.919269561768,"longitude":19.719999313354},"speed":0,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":46,"seconds":21,"timezone":"UTC"}},{"deviceId":"5","coordinate":{"latitude":51.919944763184,"longitude":19.719484329224},"speed":19,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":46,"seconds":23,"timezone":"UTC"}},{"deviceId":"9","coordinate":{"latitude":51.918914794922,"longitude":19.72047996521},"speed":0,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":46,"seconds":39,"timezone":"UTC"}},{"deviceId":"15","coordinate":{"latitude":44.425228118896,"longitude":11.273155212402},"speed":87,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":46,"seconds":53,"timezone":"UTC"}},{"deviceId":"7","coordinate":{"latitude":51.300552368164,"longitude":17.767946243286},"speed":89,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":46,"seconds":59,"timezone":"UTC"}},{"deviceId":"108","coordinate":{"latitude":44.245601654053,"longitude":12.217920303345},"speed":77,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":47,"seconds":8,"timezone":"UTC"}},{"deviceId":"13","coordinate":{"latitude":46.994400024414,"longitude":15.404622077942},"speed":90,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":47,"seconds":13,"timezone":"UTC"}},{"deviceId":"1","coordinate":{"latitude":50.578773498535,"longitude":19.154914855957},"speed":0,"ignitionState":"OFF","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":47,"seconds":17,"timezone":"UTC"}},{"deviceId":"49","coordinate":{"latitude":44.562206268311,"longitude":10.994169235229},"speed":70,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":47,"seconds":17,"timezone":"UTC"}},{"deviceId":"3","coordinate":{"latitude":42.846416473389,"longitude":2.9264533519745},"speed":90,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":47,"seconds":18,"timezone":"UTC"}},{"deviceId":"8","coordinate":{"latitude":51.918273925781,"longitude":19.720729827881},"speed":0,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":47,"seconds":20,"timezone":"UTC"}},{"deviceId":"31","coordinate":{"latitude":52.873352050781,"longitude":20.290950775146},"speed":79,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":47,"seconds":21,"timezone":"UTC"}},{"deviceId":"32","coordinate":{"latitude":43.801475524902,"longitude":4.3138313293457},"speed":89,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":47,"seconds":23,"timezone":"UTC"}},{"deviceId":"17","coordinate":{"latitude":52.079643249512,"longitude":20.694221496582},"speed":68,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":47,"seconds":27,"timezone":"UTC"}},{"deviceId":"6","coordinate":{"latitude":43.706363677979,"longitude":13.204977989197},"speed":87,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":47,"seconds":32,"timezone":"UTC"}},{"deviceId":"25","coordinate":{"latitude":51.129333496094,"longitude":1.3405156135559},"speed":11,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":47,"seconds":33,"timezone":"UTC"}},{"deviceId":"37","coordinate":{"latitude":52.040710449219,"longitude":20.036195755005},"speed":93,"ignitionState":"ON","dateTime":{"year":2014,"month":2,"day":28,"hour":15,"minute":47,"seconds":36,"timezone":"UTC"}}]}
You have two issues with your classes.
Friend
access, so the serializer cannot see them. That is why positionList
is Nothing
. The properties need to be made Public
. It is OK if the classes themselves have Friend
access, however.JSON_Position
class you have declared both the coordinate
and dateTime
properties as arrays, but in the JSON they are not arrays. This mismatch will cause an error during deserialization. Declare these properties to hold single instances.Here are the corrected classes:
Friend Class JSON_PostionList
Public positionList() As JSON_Position
End Class
Friend Class JSON_Position
Public deviceId As String
Public coordinate As JSON_Coordinates
Public speed As String
Public ignitionState As String
Public dateTime As JSON_dateTime
End Class
Friend Class JSON_Coordinates
Public Latitude As Decimal
Public Longitude As Decimal
End Class
Friend Class JSON_dateTime
Public Year As Integer
Public Month As Integer
Public Day As Integer
Public Hour As Integer
Public Minute As Integer
Public Seconds As Integer
Public Timezone As String
End Class