Ich versuche ein JSON-Objekt (ein Array) in eine generische Liste einer öffentlichen Klasse namens County zu deserialisieren. Hier ist ein Auszug aus dem JSON I erhalten:Das JSON-Objekt kann nicht deserialisiert werden, da es sich um ein schlecht formatiertes Array handelt
{
"Alachua":0,
"Baker":1,
"Bay":2,
"Bradford":3,
"Brevard":4,
"Broward":5,
"Calhoun":6,
"Charlotte":7
}
Hier ist die Klasse:
<Serializable()> _
Public Class County
Private _name As String
Private _code As Integer
Public Property Code() As Integer
Get
Return Me._code
End Get
Set(value As Integer)
Me._code = value
End Set
End Property
Public Property Name() As String
Get
Return Me._name
End Get
Set(value As String)
Me._name = value
End Set
End Property
End Class
Da jedoch der JSON-Array nicht richtig formatiert ist, wie ich es normalerweise erwarten würde, kann ich es nicht bekommen zu serialisieren.
ich zur Zeit mit Newtonsoft:
Dim countyResponse As List(Of County) = ParseRequestJSON(Of List(Of County))(request)
Und hier ist die Ausnahme:
kann nicht das aktuelle JSON-Objekt deserialisieren (zB { "name": "Wert"}) in dem Typen ‚System. Collections.Generic.List`1 [Models.County] ', da der Typ ein JSON-Array (z. B. [1,2,3]) benötigt, um korrekt zu deserialisieren. Um diesen Fehler zu beheben, ändern Sie den JSON entweder in ein JSON-Array (zB [1,2,3]) oder ändern Sie den deserialisierten Typ so, dass es ein normaler .NET-Typ ist (zB kein primitiver Typ wie ein Integer, kein Sammlertyp wie ein Array oder eine Liste), die von einem JSON-Objekt deserialisiert werden können. JsonObjectAttribute kann auch zum Typ hinzugefügt werden, um die Deserialisierung von einem JSON-Objekt zu erzwingen. Pfad 'Alachua', Linie 2, Position 12.
Jede Hilfe wäre willkommen, und bitte lassen Sie sich vom VB.net nicht abschrecken.
Die Eingabe ist ein * richtig formatiertes * JSON-Objekt. Deserialisieren Sie es als eins (es kann einem IDictionary zugeordnet werden): dann konvertieren Sie es in ein Array wie vom Programm gefordert. – user2864740
Sie haben Recht. Es ist korrekt formatiert. Es ist einfach nicht so, wie ich es erwartet hätte. –
Jemand/etwas erzeugte den JSON-Eingang als solchen. Ein einfacher Verbraucher muss sich nur damit befassen; auch wenn es anders und/oder angemessener serialisiert werden könnte. Wenn auch der Produzent kontrolliert wird, könnten die Serialisierung und der Drahtvertrag geändert werden. – user2864740