Web APIで取得したJSON形式のデータを操作するのが初めてです。私はNewtonsoft.Json.JsonConvertを使用してデシリアライズし、データテーブルに割り当てます。JSON形式デシリアライズエラー
これは、私がデータテーブルに入れようとしているJSONデータです。私は以下のクラス以下は
Public Class RootObject
Public Property classDesc As String
Public Property classCode As String
Public Property id As Integer
Public Property legend As Integer
Public Property isActive As String
Public Property atrSpaCityDistrictId As Integer
Public Property atrSpaCitieDistrict As List(Of Result) End Class
Public Class Result
Public Property cityDistrict As String
Public Property isActive As Integer
Public Property atrSpaClassLegends As List(Of Legend)
Public Property id As Integer
End Class
Public Class Legend
End Class
を作成している
[{
"classDesc":"SIDEWALK,DRIVEWAY,CURB",
"classCode":"EH",
"legend":"017",
"isActive":"Y",
"atrSpaCityDistrictId":"00D17209F8F25F6D4A00011302",
"atrSpaCitieDistrict":{
"cityDistrict":"",
"isActive":"1",
"atrSpaClassLegends":null,
"id":"00D17209F8F25F6D4A00011302"
},
"id":"00D1748B8DA0AB0A7400011202"
}]
は私のVB.Netコードです:
Dim table As DataTable Dim client As New HttpClient() client.BaseAddress = New Uri("http://localhost:5000/") client.DefaultRequestHeaders.Accept.Add(New MediaTypeWithQualityHeaderValue("application/json"))
Dim response As HttpResponseMessage = client.GetAsync("api/spaclasslegend").Result
If response.IsSuccessStatusCode Then
Dim json As String = response.Content.ReadAsStringAsync().Result table = JsonConvert.DeserializeObject(Of DataTable)(json)
End If
はエラー
「の下に取得すると、現在のJSONをデシリアライズすることはできません配列に配列(例:[1,2,3]) 0 'Alco.APTIS.Services.RootObject'型ではJSON オブジェクトが必要です(例: {「名」:「値」})が正しくデシリアライズする「
私はstackoverflow.com、最終的に助けを求めてここに投稿を使用してこの問題を解決するさまざまな方法を試してみました
'json'文字列変数の内容を確認してください。このエラーメッセージは、JSON配列からオブジェクトを逆シリアル化しようとしていることを示しています。 (たとえば、Webサービスがオブジェクトを含む配列を返している可能性があります) – pmcoltrane
すばらしい応答をいただきありがとうございます。 JSON文字列を投稿しました。確認していただけますか? – Naren
実際には、最小限のバージョンのコードを実行したときに表示されるエラーは表示されません。 'atrSpaCitieDistrict'をパースしようとすると予期しないトークンエラーが発生します。 JSON.NETの 'DataTable'コンバータは複雑なオブジェクトをサポートしていますか? – pmcoltrane