-1

次の文字列を json として http 投稿を介して受信しています。

 Dim json As String = "[{" + """name"":""jocelyne" + """," + """mo"":""jocelyne" + """}" + ",{" + """name"":""eliane" + """," + """mo"":""12345678" + """}" + "]"

このjson配列をvb.netのデータテーブルに変換する必要があります

NewtonSoft.json.dll を使用してみました:

Dim jss As New System.Web.Script.Serialization.JavaScriptSerializer()
Dim deserializedProduct As Dictionary(Of String, String) = JsonConvert.DeserializeObject(Of Dictionary(Of String, String))(json)

しかし、プロジェクトへの参照を追加し、それがbinファイルにあるにもかかわらず、現在の場所で利用できるソースコードがありません..

実際のエラーは次のとおりです。

Cannot deserialize JSON array into type 'System.Collections.Generic.Dictionary`2[System.String,System.String]'.

これを修正する方法はありますか、それともjson配列をvb.netのデータテーブルに変換する別の方法がありますか?

4

1 に答える 1

1

JSON 文字列をオブジェクトを表す に逆シリアル化しようとしましたDictionaryが、JSON 文字列には 1 つのオブジェクトではなく 2 つのオブジェクトの配列が含まれています。

したがって、List(Of Dictionary(Of String, String))代わりにDictionary(Of String, String)次を使用する必要があります。

リンクパッド:

Sub Main
    Dim json As String = "[{" + """name"":""jocelyne" + """," + """mo"":""jocelyne" + """}" + ",{" + """name"":""eliane" + """," + """mo"":""12345678" + """}" + "]"
    Dim deserializedProduct As List(Of Dictionary(Of String, String)) =  JsonConvert.DeserializeObject(Of List(Of Dictionary(Of String, String)))(json)
    deserializedProduct.Dump()
End Sub

ここに画像の説明を入力

が必要な場合はDataTable、使用してください

Sub Main
    Dim json As String = "[{" + """name"":""jocelyne" + """," + """mo"":""jocelyne" + """}" + ",{" + """name"":""eliane" + """," + """mo"":""12345678" + """}" + "]"
    Dim table As DataTable = JsonConvert.DeserializeObject(Of DataTable)(json)
    table.Dump()
End Sub

ここに画像の説明を入力

于 2013-10-22T12:34:45.957 に答える