JSONオブジェクト(配列)を逆シリアル化して、郡というパブリッククラスの汎用リストに入れようとしています。ここでJSONオブジェクトの逆シリアル化ができません。実際にフォーマットされていない配列です。
{
"Alachua":0,
"Baker":1,
"Bay":2,
"Bradford":3,
"Brevard":4,
"Broward":5,
"Calhoun":6,
"Charlotte":7
}
クラスの::ここで私が受け取るJSONからの抜粋だJSON配列が正しく、私は通常、それを期待するどのようにフォーマットされていないため、
<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
しかし、私はそれを得ることができませんシリアル化する。
私は現在Newtonsoftを使用しています:
Dim countyResponse As List(Of County) = ParseRequestJSON(Of List(Of County))(request)
そして、ここでは例外です:型「システムへ:
は、現在のJSONオブジェクト(例:{ "値" "名を"})デシリアライズすることはできません。 Collections.Generic.List`1 [Models.County] 'タイプが正しくデシリアライズするためにJSON配列(例:[1,2,3])を必要とするためです。このエラーを修正するには、JSON配列をJSON配列(例:[1,2,3])に変更するか、デシリアライズされた型を通常の.NET型に変更します(例:integerのようなプリミティブ型ではなく、配列またはリスト)をJSONオブジェクトから逆シリアル化することができます。 JsonObjectAttributeを型に追加して、強制的にJSONオブジェクトから逆シリアル化することもできます。パス 'Alachua'、2行目、12行目。
何か助けていただければ幸いです。
入力は*正しい形式の* JSONオブジェクトです。したがって、IDictionaryにマップすることができます。それをプログラムの必要に応じて配列に変換します。 – user2864740
あなたは正しいです。正しくフォーマットされています。それは私がそれを期待する方法ではありません。 –
誰か/何かがJSON入力をそのように生成しました。単純な消費者だけが対処しなければならない。たとえそれが異なっておよび/またはより適切にシリアル化されてもよい。プロデューサを制御している場合は、シリアライゼーションと電線契約を変更することもできます。 – user2864740