A simple console application that downloads and processes JSON data using .NET 4.0 with the Newtonsoft Json.NET library. The sample data is a list of kings and queens of England and the UK from http://mysafeinfo.com/api/data?list=englishmonarchs&format=json. This uses simple LINQ but the Newstonsoft LINQ to JSON API will be more efficient in many cases.
Mysafeinfo.com returns its data as a list of JSON objects — [{}, {}, {}] — so on line 32 we tell the DeserializeObject() method that the objects to deserialize are embedded within another data type.
Imports System.Net Imports System.IO Imports Newtonsoft.Json Imports System.Linq Sub Main() Dim jsonURL As String = "http://mysafeinfo.com/api/data?list=englishmonarchs&format=json" Dim reader As StreamReader Dim errorMsg As String = Nothing Try Dim request As HttpWebRequest = CType(WebRequest.Create(jsonURL), HttpWebRequest) Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse) reader = New StreamReader(response.GetResponseStream()) Dim jsonStr As String = reader.ReadToEnd() 'Console.Writeline(jsonStr) printJSON(jsonStr) Catch ex As WebException errorMsg = "Download failed. The response from the server was: " + CType(ex.Response, HttpWebResponse).StatusDescription Console.WriteLine("Error: " + errorMsg) End Try End Sub Private Sub printJSON(jsonStr As String) ' Deserialize our JSON string, then filter and print it ' Json.NET deserializer gives you a list of .NET objects Dim monarchs = JsonConvert.DeserializeObject(Of List(Of JSON_data))(jsonStr) ' Iterate over the objects and print each name property For Each monarch In monarchs Console.Writeline(monarch.nm) Next ' Set up a LINQ statement to filter the monarchs list Dim monarchList = From monarch In monarchs Where monarch.nm.Contains("William") Select monarch ' Print the results of our LINQ query For Each monarch In monarchList Console.Writeline("King or Queen: " + monarch.nm + ", Years: " + monarch.yrs) Next End Sub Public Class JSON_data Public nm As String Public cty As String Public hse As String Public yrs As String End Class