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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um das problem zu beheben, müssen Sie entweder ändern JSON-format zurück-array als Fehlermeldung vorgeschlagen, oder wenn es nicht möglich zu definieren, eine andere Klasse zu repräsentieren
Rates
:dann definieren
rates
Feld inRateReplay
KlasseRates
:ah, du hast Recht, es sollte das Doppelte statt Rate. Korrigiert meine Antwort um zu verhindern, dass irreführende Menschen zu finden, die diese Frage später.
InformationsquelleAutor har07
können Sie
InformationsquelleAutor Dibu