2016-05-11 4 views
1

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行目。

何か助けていただければ幸いです。

+1

入力は*正しい形式の* JSONオブジェクトです。したがって、IDictionaryにマップすることができます。それをプログラムの必要に応じて配列に変換します。 – user2864740

+0

あなたは正しいです。正しくフォーマットされています。それは私がそれを期待する方法ではありません。 –

+1

誰か/何かがJSON入力をそのように生成しました。単純な消費者だけが対処しなければならない。たとえそれが異なっておよび/またはより適切にシリアル化されてもよい。プロデューサを制御している場合は、シリアライゼーションと電線契約を変更することもできます。 – user2864740

答えて

2

@ user2864740に感謝します。 IDictionaryに文字列キーと整数値で逆シリアル化されます。私はIDictionaryを繰り返し、郡をリストに追加します。

Dim countyResponse As IDictionary(Of String, Integer) = ParseRequestJSON(Of IDictionary(Of String, Integer))(request) 

If IsNothing(countyResponse) = False Then 
    For Each c In countyResponse 
     Dim county As County = New County 
     county.Code = c.Value 
     county.Name = c.Key 

     Counties.Add(county) 
    Next 
End If 
関連する問題