Imports System.Collections
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Reflection
Imports System.ComponentModel.DataAnnotations
Imports Newtonsoft.Json.Linq
Imports Newtonsoft.Json.Converters
Imports Newtonsoft.Json.Serialization
Dim jsonresp as String = GetJson()
Console.WriteLine("Input JSON: ")
Console.WriteLine(jsonresp)
TestSelectTokens(jsonresp)
TestSelectToken(jsonresp)
Friend Sub TestHardcoded(jsonresp as String)
Dim quote as Decimal = CType(JToken.Parse(jsonresp).SelectToken("quotes.USDPHP"), Decimal)
Console.WriteLine("The quote for USDPHP is {0}.", quote)
Friend Sub TestSelectTokens(jsonresp as String)
Dim quotes as Dictionary(of String, Decimal) = JToken.Parse(jsonresp) _
.SelectTokens("quotes") _
.Select(Function(d) d.ToObject(of Dictionary(of String, Decimal))()) _
Console.WriteLine(If(quotes.Count = 1, "There is 1 quote: ", string.Format("There are {0} quotes", quotes.Count)))
Dim name as String = pair.Key
Dim quote as Decimal = pair.Value
Console.WriteLine(" Quote for {0} is {1}.", name, quote)
Console.WriteLine("Deserialized and re-serialized dictionary: ")
Console.WriteLine(JsonConvert.SerializeObject(quotes, Newtonsoft.Json.Formatting.Indented))
Friend Sub TestSelectToken(jsonresp as String)
Dim quotes as Dictionary(of String, Decimal) = JToken.Parse(jsonresp) _
.ToObject(of Dictionary(of String, Decimal))()
Console.WriteLine(If(quotes.Count = 1, "There is 1 quote: ", string.Format("There are {0} quotes", quotes.Count)))
Dim name as String = pair.Key
Dim quote as Decimal = pair.Value
Console.WriteLine(" Quote for {0} is {1}.", name, quote)
Console.WriteLine("Deserialized and re-serialized dictionary: ")
Console.WriteLine(JsonConvert.SerializeObject(quotes, Newtonsoft.Json.Formatting.Indented))
Function GetJson() as String
Dim Jstring As String = <![CDATA[
"terms":"https:\/\/currencylayer.com\/terms",
"privacy":"https:\/\/currencylayer.com\/privacy",
Console.WriteLine("Environment version: " & Environment.Version.ToString())
Console.WriteLine("Json.NET version: " & GetType(JsonSerializer).Assembly.FullName)
Console.WriteLine("Unhandled exception: ")
Public Class AssertionFailedException
Public Sub New(message As String)
Public Sub New(message As String, inner As Exception)
MyBase.New(message, inner)
Public Sub IsTrue(value as Boolean, Optional message as String = "failed")
Throw New AssertionFailedException(message)