Parsen von JSON mit JSON.NET VB.NET

Ich versuche zu analysieren, einige mit JSON JSON.NET; aber es ist nicht etwas, was ich bin vertraut mit, und ich bin kämpfen, um Sie zu Deserialisieren.

Dies ist die JSON:

{
  "disclaimer": "use at own risk",
  "license": "testing",
  "timestamp": 1391770861,
  "base": "USD",
  "rates": {
    "AED": 3.672839,
    "AFN": 56.367,
    "ALL": 103.5113,
    "AMD": 412.35,
    "ANG": 1.78894,
    "AOA": 97.608324,
    "ARS": 7.880804,
    "AUD": 1.117779,
    "AWG": 1.789825,
    "AZN": 0.784133,
    "BAM": 1.442736,
    "BBD": 2
  }
}

Und hier ist mein code derzeit:

Public Sub ParseJSON()
    JSONResponse = String.Empty
    Dim request As HttpWebRequest = DirectCast(HttpWebRequest.Create(LatestURL), HttpWebRequest)
    request.ContentType = "application/json; charset=utf-8"
    request.Accept = "application/json, text/javascript, */*"
    request.Method = "POST"
    Using writer As New StreamWriter(request.GetRequestStream())
        writer.Write("{id : 'test'}")
    End Using

    Dim response As WebResponse = request.GetResponse()
    Dim stream As Stream = response.GetResponseStream()

    Using StreamReader As New StreamReader(stream)
        While Not StreamReader.EndOfStream
            JSONResponse += StreamReader.ReadLine()
        End While
    End Using

    Dim RateReply = JsonConvert.DeserializeObject(Of RateReply)(JSONResponse)
End Sub

Public Class RateReply
    Public rates As IList(Of Rate)
    Public base As String
    Public timeStamp As Integer
    Public license As String
    Public disclaimer As String

    Public Sub New()
        rates = New List(Of Rate)()
    End Sub
End Class

Public Class Rate
    Public Currency As String
    Public Rate As Decimal
End Class

Ausnahme ich bin derzeit zu bekommen ist:

Newtonsoft.Json.JsonSerializationException: kann Nicht deserialisiert werden die aktuellen JSON-Objekt (z.B. {"name":"Wert"}) in Typ " System.Sammlungen.Generisches.IList`1[KTMOM.Tests.Rate]', weil die Art benötigt ein JSON-array (z.B. [1,2,3]) Deserialisieren korrekt.
Um diesen Fehler zu beheben, ändern den JSON zu JSON-array (z.B. [1,2,3]) oder ändern Sie die Deserialisierung-Typ, so dass es ein normales .NET-Typ (z.B. nicht in einen primitiven Typ wie die Ganzzahl, keine Auflistung geben, wie ein array oder eine Liste), die deserialisiert werden von einem JSON-Objekt. JsonObjectAttribute können ebenfalls Hinzugefügt werden, um den Typ zu erzwingen, es zu Deserialisieren von einem JSON-Objekt.

Ich glaube, dass dies, weil die Preise sind nicht definiert als ein array in JSON, aber ich weiß nicht, wie diese zu lösen.

Jegliche Hilfe würde sehr geschätzt werden.

InformationsquelleAutor OCDan | 2014-02-08

Schreibe einen Kommentar